我通过对从服务器检索的 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/