我正在尝试将 Map 转换成 object 数组
假设我有以下地图:
let myMap = new Map().set('a', 1).set('b', 2);
我想把上面的地图转换成下面的:
[ { "name": "a", "value": "1", }, { "name": "b", "value": "2", } ]
使用 传播语法和 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并映射键/值对。
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
例如,您可以按以下方式使用 Map.prototype.forEach():
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循环:
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);
很简单,我会逐步解释:
const map = new Map().set('a', 1).set('b', 2).set('c', 3) const mapArr = [...map] // array of arrays
key
value
map
object
const arr = mapArr.map(([key, value]) => ({key, value}))
记住: 我们用于映射数据的名称将是在本例中映射的对象的名称 key和 value。
一句话:
const map = new Map().set('a', 1).set('b', 2).set('c', 3) const arr = [...map ].map(([key, value]) => ({key, value})) console.log({arr})