通过地图Javascript分析

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

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

而在一个对象地图(即当我只是打印的价值观),他们有我所期望的计数。

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

我想转换基于这样的数组内嵌套的地图。 有没有现有的图书馆,我可以利用?

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

请build议如果这是处理这些数据的理想方式,我发现很难从嵌套的地图中获取数据。

使用Map.entries获取地图中的项目,并使用Array.from迭代它,以创build一个具有所需值的新Array

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

编辑

得到以下结果:

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

我循环在第一个地图级别来喂我用二级地图数据填充一个新的JSON对象。

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

获得以下输出

 [ [ 'spanish_3', ... ], [ 'spanish_3', ... ], ... ] 

在这里,我创build了一个2维数组,我将其与destructuration一起使用(如果您已经知道正在处理的数据,则destructuration将起作用)。

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

有很多的用例,取决于你有什么信息和你想要做什么。 希望所有的例子都能为你提供足够的帮助来解决你的特定用例。 🙂

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

 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"]