从对象数组中添加/替换对象 JavaScript

新手上路,请多包涵

I want to Add/Replace the object from array of objects by testing some properties against array object

  • 替换 object if name and id matches

  • 添加 objectarray if name and id does not match from array objects

我正在使用下面的代码,它工作正常但我不确定它是否是一个好的解决方案。

 let arr = [{name: 'test1', id:1, data: {a:1} }, {name:'test2', id:2, data: {a:2}}]
let obj = {name:'test3', id:3, data: {a:3}}
let itemFound = false;
let newArr = arr.map((item)=>{
  let test = item.name === obj.name && item.id === obj.id;
  if(test){
	itemFound = true;
  }
  return test ? obj : item;
});

if(!itemFound){
	newArr.push(obj);
}
console.log(newArr)

原文由 Dipak Telangre 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 317
1 个回答

如果找到或推送对象,您可以查找索引并更新数组。

 var array = [{ name: 'test1', id: 1, data: { a: 1 } }, { name: 'test2', id: 2, data: { a: 2 } }],
    object = { name: 'test3', id: 3, data: { a: 3 } },
    index = array.findIndex(({ name, id }) => name === object.name && id === object.id);

if (index === -1) {
    array.push(object);
} else {
    array[index] = object;
}

console.log(array);

原文由 Nina Scholz 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题