📌  相关文章
📜  如果 id 存在则更新数组中的对象,否则附加 javascript (1)

📅  最后修改于: 2023-12-03 15:38:57.758000             🧑  作者: Mango

如果 id 存在则更新数组中的对象,否则附加 JavaScript

在开发中,我们通常需要在数组中根据对象的 id 值来查找和更新特定的对象。本篇文章将介绍如何根据 id 值在数组中进行对象的更新,同时如果 id 不存在,则在数组末尾附加一个新的对象。

实现方式一:使用 findIndex 和 splice 方法
// 定义初始数组
const arr = [
  { id: 1, name: 'John' },
  { id: 2, name: 'Jane' },
];

// 定义要更新的对象
const newObj = { id: 1, name: 'James' };

// 查找数组中是否存在要更新的对象,如果存在则将其更新
const index = arr.findIndex(obj => obj.id === newObj.id);
if (index !== -1) {
  arr.splice(index, 1, newObj);
} else {
  arr.push(newObj);
}

console.log(arr);
// 输出结果:[{ id: 1, name: 'James' }, { id: 2, name: 'Jane' }]

上述代码首先定义了一个初始数组 arr,以及要更新的对象 newObj。然后使用 findIndex 方法和箭头函数来查找数组中是否存在要更新的对象,如果存在则使用 splice 方法将其替换为新的对象。如果不存在则使用 push 方法将新的对象附加在数组末尾。

实现方式二:使用 map 和 Object.assign 方法
// 定义初始数组
const arr = [
  { id: 1, name: 'John' },
  { id: 2, name: 'Jane' },
];

// 定义要更新的对象
const newObj = { id: 1, name: 'James' };

// 使用 map 方法创建一个新的数组,对要更新的对象进行更新或附加
const newArr = arr.map(obj => obj.id === newObj.id ? Object.assign({}, obj, newObj) : obj);
if (newArr === arr) {
  newArr.push(newObj);
}

console.log(newArr);
// 输出结果:[{ id: 1, name: 'James' }, { id: 2, name: 'Jane' }]

上述代码首先定义了一个初始数组 arr,以及要更新的对象 newObj。然后使用 map 方法创建一个新的数组 newArr,并对要更新的对象进行更新或附加。如果新的数组 newArr 和原始数组 arr 相同,则说明没有找到要更新的对象,需要使用 push 方法将其附加在新的数组末尾。

综上所述,根据 id 值来更新数组中的对象并附加新的对象可以有多种实现方式,开发者可以根据自己的业务场景和喜好选择适合自己的方法。