如何使用从另一个相同大小数组的相应元素中获取的数据更新对象数组?

How to update an array of objects with data taken from the corresponding elements of another same-size array?

假设我有一个对象数组如下:

data = [
{
 "id":34
},
{
 "id":35
},
{
 "id":36
},
{
 "id":37
}
]

和另一个数组如下:

myNumberArray  = [1,2,3,4]

它们可能大得多,但两个数组中的元素数量始终相同。我想通过添加 number 属性来修改 data 的每个元素,并为其分配 myNumberArray.

对应元素的值

完成后,data 将如下所示:

data = [
{
 "number":1,
 "id":34
},
{
 "number":2,
 "id":35
},
{
 "number":3,
 "id":36
},
{
 "number":4,
 "id":37
}
]

我该怎么做?

for (let i in myNumberArray) {
  Object.assign(data[i], {
    number: myNumberArray[i]
  })
}

尝试以下解决方案:

let myNumberArray  = [1,2,3,4];

let data = [
{
 "id":34
},
{
 "id":35
},
{
 "id":36
},
{
 "id":37
}
];

const updatedArray = data.map((item,index)=> {
  return {
    ...item,
    "number":myNumberArray[index]
  }
});

console.log(updatedArray);

myNumberArray  = [1,2,3,4]

data = [
 {
  "id":34
 },
 {
  "id":35
 },
 {
  "id":36
 },
 {
  "id":37
 }
]

data.forEach((elem, index)=>{
  data[index]["number"]=myNumberArray[index];
})

console.log(data);

这应该可以解决您的问题。

解释:

我使用 forEach 遍历数据数组,forEach 接受两个参数,索引处的当前值和值。

由于您的是一对一映射,我们使用当前索引访问 myNumberArray 中同一索引处的值,并在 data 中为 number键。

let myNumberArray  = [1,2,3,4]

let data = [
{
 "id":34
},
{
 "id":35
},
{
 "id":36
},
{
 "id":37
}
]


data = data.map( (x, i) => ({ number: myNumberArray[i], id: x.id}) )


console.log(data)