通过对从服务器检索到的json数据执行某些操作,我返回了一个map。当我打印键和值时,映射结构如下所示
action = [object Map]
comedy = [object Map]
thriller = [object Map]在对象映射中(也就是当我只是打印值的时候),它们有我期望的计数。
Map {
'spanish' => 3
'english' => 4
}
Map {
'spanish' => 1
'english' => 2
} 我想要将嵌套的map转换为基于如下所示的数组。有没有现成的库可以利用?
var comedy[] = ['spanish_1', 'english_2']
var action[] =['spanish_3', 'english_4']请建议这是否是处理此数据的理想方法,因为我发现很难从嵌套映射中获取数据。
发布于 2017-11-15 00:08:20
使用Map.entries获取地图中的项,并使用Array.from对其进行迭代,以创建具有所需值的新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',
...
],
...
]在这里,我创建了一个二维数组,我将其与析构一起使用(如果您已经知道要访问的数据,则析构将会起作用)。
const [
action,
comedy,
thriller,
] = Array.from(myMap.entries(), ([
xKey,
xValue,
]) => Array.from(xValue.entries(), ([
yKey,
yValue,
]) => `${yKey}_${yValue}`));有很多用例,这取决于你有什么信息,以及你想用它做什么。希望所有的例子都能给你足够的帮助,帮助你弄清楚你的具体用例。:)
发布于 2017-11-15 00:09:24
您可以将其转换为数组,并将数据映射为所需的格式:
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"]
https://stackoverflow.com/questions/47290160
复制相似问题