javascript - 通过 Maps Javascript 解析

标签 javascript arrays json node.js object

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

action = [object Map]  
comedy = [object Map]  
thriller = [object Map]

在对象 Map 中(即当我只打印值时)它们具有我期望的计数。

Map {  
 'spanish' => 3  
 'english' => 4  
}  
Map {  
 'spanish' => 1  
 'english' => 2 
}  

我想将嵌套映射转换为基于类似这样的数组。是否已有我可以利用的现有库?

var comedy[] = ['spanish_1', 'english_2']
var action[] =['spanish_3', 'english_4']

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

最佳答案

使用 Map.entries 获取 map 中的项目并使用 Array.from 对其进行迭代创建一个具有所需值的新 Array

const myNewArray = Array.from(myMap.entries(), ([
  key,
  value,
]) => `${key}_${value}`);

编辑

得到如下结果:

{
   actions: [
     'spanish_3',
     ...
   ],

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

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

    Array.from(myMap.entries()).reduce((tmp, [
      xKey,
      xValue,
    ]) => ({
      ...tmp,

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

得到如下输出

[
   [
     'spanish_3',
     ...
   ],

   [
    'spanish_3',
     ...
   ],

   ...
]

我在这里创建了一个二维数组,我将其与解构一起使用(如果您已经知道即将到来的数据,解构将起作用)。

    const [
      action,
      comedy,
      thriller,
    ] = Array.from(myMap.entries(), ([
      xKey,
      xValue,
    ]) => Array.from(xValue.entries(), ([
      yKey,
      yValue,
    ]) => `${yKey}_${yValue}`));

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

关于javascript - 通过 Maps Javascript 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47290160/

相关文章:

javascript - Angularjs 清除 ng-repeat 过滤器

javascript - 复杂的 IF 语句问题

arrays - TRANSPOSE 公式数组

Python Numpy : All combinations from array or scalar

sql - 如何在 json_encode 中存储日语字符?

json - 粘贴缺少的VS2019的特殊内容(JSON到类)-安装了所有Web开发工具

javascript - 无法解决 Nodejs Express 中的 promise

javascript - 在ckeditor中查找并替换html(不仅仅是文本)?

c# - 将json字符串转换为字符串数组

json - 客户端发送的请求在语法上不正确()。+ Spring,RESTClient