JavaScript es 6将Map转换为json对象数组



我有一个Map,其中键和值是json对象,例如

var myMap = new Map();
myMap.set('1', "mike");
myMap.set('2', "tom");

我如何通过重新构造对象模式(由于请求了api(将valuefullame映射到上面Map中的键和值,将其转换为对象数组

[{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],...]

由于它将首先转换为嵌套对象数组,因此我必须通过映射索引找到id和名称,如arr[0]给我valuearr[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] }));,但它将转换为嵌套对象

似乎只缺少对入口元组的值部分的.name属性访问,只获取名称字符串,而不是整个对象:

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

您可以通过使用参数析构函数语法来简化

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

最新更新