首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析Maps Javascript

解析Maps Javascript
EN

Stack Overflow用户
提问于 2017-11-15 00:01:50
回答 2查看 53关注 0票数 1

通过对从服务器检索到的json数据执行某些操作,我返回了一个map。当我打印键和值时,映射结构如下所示

代码语言:javascript
复制
action = [object Map]  
comedy = [object Map]  
thriller = [object Map]

在对象映射中(也就是当我只是打印值的时候),它们有我期望的计数。

代码语言:javascript
复制
Map {  
 'spanish' => 3  
 'english' => 4  
}  
Map {  
 'spanish' => 1  
 'english' => 2 
}  

我想要将嵌套的map转换为基于如下所示的数组。有没有现成的库可以利用?

代码语言:javascript
复制
var comedy[] = ['spanish_1', 'english_2']
var action[] =['spanish_3', 'english_4']

请建议这是否是处理此数据的理想方法,因为我发现很难从嵌套映射中获取数据。

EN

回答 2

Stack Overflow用户

发布于 2017-11-15 00:08:20

使用Map.entries获取地图中的项,并使用Array.from对其进行迭代,以创建具有所需值的新Array

代码语言:javascript
复制
const myNewArray = Array.from(myMap.entries(), ([
  key,
  value,
]) => `${key}_${value}`);

编辑

若要获得以下结果:

代码语言:javascript
复制
{
   actions: [
     'spanish_3',
     ...
   ],

   comedy: [
    'spanish_3',
     ...
   ],
}

我在第一个地图级别上循环,以提供一个新的json对象,我用第二个级别的地图数据填充该对象。

代码语言:javascript
复制
    Array.from(myMap.entries()).reduce((tmp, [
      xKey,
      xValue,
    ]) => ({
      ...tmp,

      [xKey]: Array.from(xValue.entries(), ([
        yKey,
        yValue,
      ]) => `${yKey}_${yValue}`),
    }), {});

要获得以下输出

代码语言:javascript
复制
[
   [
     'spanish_3',
     ...
   ],

   [
    'spanish_3',
     ...
   ],

   ...
]

在这里,我创建了一个二维数组,我将其与析构一起使用(如果您已经知道要访问的数据,则析构将会起作用)。

代码语言:javascript
复制
    const [
      action,
      comedy,
      thriller,
    ] = Array.from(myMap.entries(), ([
      xKey,
      xValue,
    ]) => Array.from(xValue.entries(), ([
      yKey,
      yValue,
    ]) => `${yKey}_${yValue}`));

有很多用例,这取决于你有什么信息,以及你想用它做什么。希望所有的例子都能给你足够的帮助,帮助你弄清楚你的具体用例。:)

票数 1
EN

Stack Overflow用户

发布于 2017-11-15 00:09:24

您可以将其转换为数组,并将数据映射为所需的格式:

代码语言:javascript
复制
const map = new Map()
map.set('spanish', 3)
map.set('english', 4)

const result = Array.from(map).map(([key, value]) => `${key}_${value}`)

console.log(result) // ["spanish_3", "english_4"]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47290160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档