从现有的值数组中向JavaScript对象添加新的键和值。

3
我有一个现有的id数组,我试图遍历每个元素将其作为“id:”键添加到现有对象数组中。我尝试了许多不同的循环(for,for in,map,forEach),但结果都是一样的-它只会向每个对象添加第一个id,所以'id:'a'' x 6。
以下是我的示例:
const ids = ['a','b','c','d','e','f']

const objArr = [
  {
   property: "some value",
  }
  {
   property: "some value",
  }
  {
   property: "some value",
  }
  {
   property: "some value",
  }
  {
   property: "some value",
  }
  {
   property: "some value",
  }
]
   

我想要实现的一个例子

const objArr = [
  {
   property: "some value",
   id: 'a'
  }
  {
   property: "some value",
   id: 'b'
  }
  {
   property: "some value",
   id: 'c'
  }
  {
   property: "some value",
   id: 'd'
  }
  {
   property: "some value",
   id: 'e'
  }
  {
   property: "some value",
   id: 'f'
  }
]

这是一个嵌套的 for in 循环 forEach 循环的示例,我尝试过但没能成功。
ids.forEach((item) => {
    for (const key in objArr) {
      objArr[key].id = item
    }
  })

有人能解释一下我做错了什么,以及如何实现我所尝试的吗?


2
你的数组无效。逗号应该放在对象之间。 - Andy
objArr 的每次迭代都会覆盖前一次迭代的键。 - mykaf
@Andy 抱歉,在写出来的时候漏掉了那个。为了清晰起见,我会添加它。 - i-am-niall
2个回答

4

只需循环遍历objArr数组,并在每个item中添加一个id属性,其值等于ids数组上相同索引位置的项目。

const ids = ['a', 'b', 'c', 'd', 'e', 'f']

const objArr = [{
  property: "some value",
}, {
  property: "some value",
}, {
  property: "some value",
}, {
  property: "some value",
}, {
  property: "some value",
}, {
  property: "some value",
}]

objArr.forEach((item, index) => {
  item.id = ids[index];
})

console.log(objArr);


3
你正在遍历这两个数组,但实际上只需要遍历一个并使用索引进行操作:
ids.forEach((id, index) => {
  objArr[index].id = id
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接