繁体   English   中英

如何将 Map 转换为 object 的数组?

[英]How to convert Map to array of object?

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

假设我有以下 map:

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

我想将上面的 map 转换为以下内容:

[
   {
      "name": "a",
      "value": "1",
   },
   {
      "name": "b",
      "value": "2",
   }
]

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

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

使用Spread语法Array.map()

 let myMap = new Map().set('a', 1).set('b', 2); const arr = [...myMap].map(([name, value]) => ({ name, value })); console.log(arr); 

您还可以使用任何兼容的迭代方法简单地迭代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);

写了一篇博客文章,为那些有兴趣了解更多信息的人解释了不同的方法。

很简单,我将分步骤解释:

  1. 将 map 散布到 arrays 的数组中。
const map = new Map().set('a', 1).set('b', 2).set('c', 3)
const mapArr = [...map] // array of arrays
  1. Map 每个子数组作为key - value对。 map function 返回一个包含objectkey value的新数组。
const arr = mapArr.map(([key, value]) => ({key, value}))

** 请记住:** 我们用于映射数据的名称将是在本例中映射的 object keyvalue的名称。

一个班轮:

 const map = new Map().set('a', 1).set('b', 2).set('c', 3) const arr = [...map ].map(([key, value]) => ({key, 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); 

仅使用 ES6 Spread语法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM