如何将 Map 转换为对象数组?

我正在尝试将 Map 转换成 object 数组

假设我有以下地图:

let myMap = new Map().set('a', 1).set('b', 2);

我想把上面的地图转换成下面的:

[
{
"name": "a",
"value": "1",
},
{
"name": "b",
"value": "2",
}
]
105406 次浏览

使用 传播语法Array.map ():

let myMap = new Map().set('a', 1).set('b', 2);


const arr = [...myMap].map(([name, value]) => ({ name, value }));


console.log(arr);

ES6的传播情况如下:

let myMap = new Map().set('a', 1).set('b', 2);


const  result = Array.from(myMap).map(([name, value]) => ({name, value}))


console.log(result);

您可以使用 Array.from并映射键/值对。

let map = new Map().set('a', 1).set('b', 2),
array = Array.from(map, ([name, value]) => ({ name, value }));


console.log(array);

您还可以使用任何兼容的迭代方法在 Map对象上进行迭代,并将每个项作为对象添加到结果数组中。

例如,您可以按以下方式使用 Map.prototype.forEach():

const myMap = new Map().set('a', 1).set('b', 2);
const arr = [];


myMap.forEach((value, name) => arr.push({ name, value }));


console.log(arr);

或者,作为一种替代方法,您可以像下面这样使用 for...of循环:

const myMap = new Map().set('a', 1).set('b', 2);
const arr = [];


for (const [name, value] of myMap) {
arr.push({ name, value });
}


console.log(arr);

为那些对学习更多感兴趣的人写了一份 博客文章解释不同的方法。

仅使用 ES6散开语法:

const myMap = new Map().set('a', 1).set('b', 2);
const arr = [...myMap];
console.log(arr);