从另一个数组中的对象数组生成一种格式的对象数组。
给定数组为:
let target =
[[{key: "subscriber_id", value: "1"},
{key: "msisdn_value", value: "2"}],
[{key: "subscriber_id", value: "3"},
{key: "msisdn_value", value: "4"}
]]
预期的对象数组应为:
result = [
{"subscriber_id":"1","msisdn_value":"2"},
{"subscriber_id":"3","msisdn_value":"4"},
]
答案 0 :(得分:3)
将嵌套的map
调用与Object.fromEntries
和Object.values
一起使用,可获得简洁明了的解决方案,如下所示:
const result = target.map(e => Object.fromEntries(e.map(Object.values)));
或者,为获得更有效的解决方案,请使用reduce
:
const result = target.map(e => e.reduce((a, { key, value }) => (a[key] = value, a), {}));
答案 1 :(得分:2)
您可以使用地图和解构
let target = [[{key: "subscriber_id",value: "1"},{key: "msisdn_value",value: "2"}],[{key: "subscriber_id",value: "3"},{key: "msisdn_value",value: "4"}]]
let final = target.map(data => {
let [{key:a,value:b},{key:c,value:d}] = data
return { [a]:b, [c]:d }
})
console.log(final)
如果内部数组中有两个以上元素,请遍历每个元素
let target = [[{key: "subscriber_id",value: "1"},{key: "msisdn_value",value: "2"}],[{key: "subscriber_id",value: "3"},{key: "msisdn_value",value: "4"},{key: "key",value: "value"}]]
let final = target.map((data) => {
return data.reduce((obj,{key,value})=>{
obj[key] = value
return obj
},{})
})
console.log(final)