我的变量this.rows
中有一个项目对象。来自服务器的实时项目与this.rows
对象集合中的实时项目相同。
如何使用新值替换项目?
以下是一个例子:
let rows = [
{id: 11, active: 'no'},
{id: 22, active: 'yes'},
{id: 33, active: 'no'},
{id: 44, active: 'no'}
]
new_item = {id: 22, active:'yeah'};
rows.forEach(item => {
if (item.id === new_item.id) {
return new_item;
}
});
答案 0 :(得分:2)
使用" findIndex"查找rows数组中新item元素的索引的方法。然后,检查是否找到了结果(检查索引是否大于-1)。使用找到的元素的位置将项目分配给数组。
const indexOfItemInArray = rows.findIndex(q => q.id === new_item.id);
if (indexOfItemInArray > -1) {
rows[indexOfItemInArray] = new_item;
}
或使用"拼接"方法:
const indexOfItemInArray = rows.findIndex(q => q.id === new_item.id);
rows.splice(indexOfItemInArray, 1, new_item);
答案 1 :(得分:1)
在行中查找项目并指定新的项目键:
变异行
_.chain(rows)
.find({ id: new_item.id })
.assign(new_item)
.value();
不要改变行:
const newRows = _.chain(rows)
.findIndex({ id: new_item.id })
.thru(index => _.chain(rows)
.cloneDeep()
.set(index, new_item)
.value()
)
.value();
答案 2 :(得分:0)
要使用特定ID的新值更新数据,请使用map
函数:
rows = rows.map((row) => {
if (row.id === new_item.id) {
row = new_item;
}
return row;
});