首页 > 解决方案 > 用 Javascript 替换对象数组中的项目

问题描述

我有一个这样的对象数组:

const myArr = [{id: 1, ...}, {id: 2, ...}, {id: 3, ...}];

我有一个这样的对象:

const myObj: {id: 2, someNewField};

我想将这个新对象替换为原始数组中具有相同 ID 的对象,我该怎么做?

我试着这样做:

const index = myArr.findIndex(item => item.id === myObj.id);
const filteredArr = myArr.filter(item => item.id !== myObj.id);

filteredArr.splice(index, 0, myObj);

它有效,但也许有更好的方法来做到这一点

标签: javascript

解决方案


.map您总是可以使用它来返回一个新数组,而不是查找索引和过滤。

const myObj = { id: 2, new: 1 };
const myArr = [{ id: 1 }, { id: 2 }, { id: 3 }];

const newArr = myArr.map(v => {
    return v.id === myObj.id ? myObj : v;
});

如果在数组中找不到该项目,这取决于您想做什么,因为这只会替换。


推荐阅读