【问题标题】:how to add objects to arrays如何将对象添加到数组
【发布时间】:2021-06-02 09:59:53
【问题描述】:

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

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

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

离我还有多远?

【问题讨论】:

  • finishedArray 是一个数组,其中一个元素是一个对象?

标签: javascript arrays object javascript-objects


【解决方案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的解决方案比这更合理。

【讨论】:

    【解决方案2】:
    const finishedArray = [
      startingArray.reduce((a, v) => {a[v.key] = v.value; return a}, {})
    ]
    

    【讨论】:

    • 只是为了好奇,如果我想让它们也分成自己的对象,例如 [{description:description},{description2:description2},{description3:description3}]
    • 用map代替reduce。
    • 如何使用地图
    • 所以在我完成数组后使用地图?我之前想过
    【解决方案3】:

    我认为仅使用基本的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;
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-21
      • 2014-03-28
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多