如何将对象添加到数组

时间:2021-03-03 19:14:37

标签: javascript arrays object javascript-objects

我正在尝试从一组两个不同的数组中构造一个对象数组。我对我需要从这里去哪里感到有些困惑。

我正在创建一个唯一的键值,但该对象将进入单独的数组。

const startingArray = [
{
 key: "description",
 value: "my description"
},
{
 key: "description2",
 value: "my description2"
},
{
 key: "description3",
 value: "my description3"
},
]

我的逻辑

const k = mystartingArray.reduce((acc, d, count) => {
 const name = Object.value(d)[0]
 const title = Object.value(d)[1]

const value = {
 [name]: title
}
acc.push(value)

return acc

},[])

我希望数组的外观

const finishedArray = [
{
   description: "my description",
   description2: "my description2,
   description3: "my description3,
}

离我还有多远?

3 个答案:

答案 0 :(得分:2)

我认为只需使用基本的 forEach 来解决这个问题会更简单。

let value = {};

startingArray.forEach(obj => {
    value[obj.key] = obj.value;
});

const finishedArray = [value];

或者,如果您不想拥有 value 对象:

const finishedArray = [{}];

startingArray.forEach(obj => {
  finishedArray[0][obj.key] = obj.value;
});

答案 1 :(得分:1)

const finishedArray = [
  startingArray.reduce((a, v) => {a[v.key] = v.value; return a}, {})
]

答案 2 :(得分:1)

完成代码:

const startingArray = [
  {
    key: "description",
    value: "my description"
  },
  {
    key: "description2",
    value: "my description2"
  },
  {
    key: "description3",
    value: "my description3"
  },
];

const k = startingArray.reduce((acc, d, count) => {
  return [{
    ...(acc[0] || {}),
    [d.key]: d.value
  }]
},[])

console.log(k);

不过,我认为Rocket Hazmat的解决方案比这个更合理。