将另一个数组中的数组对象打印为javascript中的特定格式

时间:2019-08-24 09:14:55

标签: javascript arrays object javascript-objects

从另一个数组中的对象数组生成一种格式的对象数组。

给定数组为:

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"},
]

2 个答案:

答案 0 :(得分:3)

将嵌套的map调用与Object.fromEntriesObject.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)