【发布时间】:2020-04-11 19:43:48
【问题描述】:
我有一个带有键和值作为 json 对象的 Map,例如
var myMap = new Map();
myMap.set('1', "mike");
myMap.set('2', "tom");
我如何通过使用 value 和 fullame 映射到上面 Map 中的键和值来重新构造对象模式(由于请求的 api),从而将其转换为对象数组
[{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] 给我value 和arr[1] 给我fullName...
还有其他更好的方法吗?也欢迎使用 Lodash 在这里提出建议!
【问题讨论】:
-
那不是 JSON 对象,它只是一个对象。
-
完全不清楚您的 Map 对象包含什么。您的 Map 声明或所需的对象数组都不是有效的语法。如果问题清楚地表明您从什么数据开始以及您想要什么数据作为结果,我们可能会在几分钟内为您提供帮助。
-
值对象的
id属性是否总是和map中的key一样? -
是的,假设是这样。
-
@KevDing - 这会将您的整个问题变成一个不同且非常简单的问题。您的这部分问题
[[1, "tom", 28],[2, "mike", 30],...]仍然是错误的。我什至不知道你为什么要问这个。迭代Map对象并自己构建每个对象。这是微不足道的。它需要一个for循环。
标签: javascript arrays ecmascript-6 lodash