繁体   English   中英

JavaScript es 6 将 Map 转换为 json object 数组

[英]JavaScript es 6 convert Map to json object array

我有一个 Map,其键和值为 json object,例如

var myMap = new Map();

myMap.set('1', "mike");
myMap.set('2', "tom");

How could I turn it into an object array by re-construct the object schema (due to api requested) with value and fullame maps to the key and value in above Map like

[{value : 1, fullName: "mike"},{value : 2, fullName: "tom"},...]

我试过使用

Array.from(myMap).map(arr => ({ value: arr[0], fullName: arr[1] }));

(注意, Array.from(myMap)会给你像数组数组一样的结果,没有办法正常使用属性名解构

[[1, "tom", 28],[2, "mike", 30],...]

因为它将首先转换为嵌套的 object 数组,所以我必须通过 map 的索引找到 id 和名称,例如arr[0]给我value ,而arr[1]给我fullName ...

还有其他更好的方法吗? 在这里也欢迎使用 Lodash 提出建议!

还有其他更好的方法吗?

您可以使用Array.from的第二个参数而不是map ,并且可以对元组参数使用参数解构:

Array.from(myMap, ([value, fullName]) => ({ value, fullName }));

但是不,没有办法手动构造具有自定义属性名称valuefullName的对象数组。

如果您想忽略 id 键并仅获取值,请使用

Array.from(myMap.values())

默认迭代器会产生两者的元组。

我试过Array.from(myMap).map(arr => ({ value: arr[0], name: arr[1] })); 但这将转换为嵌套的 object

看来您只是缺少对条目元组的值部分的.name属性访问,仅获取名称字符串而不是整个 object:

Array.from(myMap).map(arr => ({ value: arr[0], name: arr[1].name }));
//                                                         ^^^^^

您可以通过使用参数解构语法来简化它

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

暂无
暂无

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

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