如何在对象数组中查找和替换对象

Sra*_*ani 5 javascript arrays typescript

我有一系列这样的对象。

 [{
    "id": 1,
    "name": "January",
    "abc": abc,
    "xyz": xyz
}, {
    "id": 2,
    "name": "February",
    "abc": abc,
    "xyz": xyz
}]
Run Code Online (Sandbox Code Playgroud)

我想用不同的对象替换 id 2 的对象,并且我希望我的对象像这样。

 [{
    "id": 1,
    "name": "January",
    "abc": abc,
    "xyz": xyz
}, {
    "id": 2,
    "name": "New month",
    "abc": 1234abc,
    "xyz": someVlaue
}]
Run Code Online (Sandbox Code Playgroud)

如何在打字稿或JavaScript中以有效的方式做到这一点。

Roh*_*dal 6

实现这一目标的不同方法。

  1. 通过使用Object.assign()方法。它返回修改后的目标对象。

const data = [{
    "id": 1,
    "name": "January",
    "abc": "abc",
    "xyz": "xyz"
}, {
    "id": 2,
    "name": "February",
    "abc": "abc",
    "xyz": "xyz"
}];

const target = data.find((obj) => obj.id === 2);

const source = {
  id: 2,
  name: 'New Month',
  abc: 'abc123',
  xyz: 'someValue'
};

Object.assign(target, source);

console.log( data );
Run Code Online (Sandbox Code Playgroud)

  1. 通过使用array.map()方法创建一个新数组,其中填充了对调用数组中每个元素调用所提供函数的结果。

const data = [{"id": 1,"name": "January","abc": "abc","xyz": "xyz"}, {"id": 2,"name": "February","abc": "abc","xyz": "xyz"}];

const modifiedObj = {"id": 2,"name": "New month","abc": "1234abc","xyz": "someVlaue"};

const result = data.map((item) => item.id === modifiedObj.id ? modifiedObj : item);

console.log(result);
Run Code Online (Sandbox Code Playgroud)


小智 1

看起来这篇文章对此进行了很好的解释。最上面的答案解释了如何使用 find() 以及 findIndex()。应该可以帮助您实现您想要做的事情。

在 JavaScript 对象数组中按 id 查找对象

编辑:忘记了替换件。

根据javascript中对象数组中的id替换特定对象