[英]update array of object using javascript es6
除了下面的代码,还有其他任何方法可以写更新对象数组中的项吗?
const updateTodo = (list, updated) => {
const index = list.findIndex(item => item.id === update.id)
return [
...list.slice(0,index),
updated,
...list.slice(index+1)
]
}
等一下,上面的功能还可以吗? https://jsbin.com/sifihocija/2/edit?js,控制台
您执行的方式是正确的方式。 但是它对您不起作用,因为在您的情况下, updated
是一个数组而不是一个对象,因此您只需要访问该数组的第一个元素的id
const updateTodo = (list, updated) => {
const index = list.findIndex(item => return item.id === updated[0].id)
return [
...list.slice(0,index),
updated[0],
...list.slice(index+1)
]
}
但是我更喜欢使用库immutability-helper
对您可以执行的数据进行任何更新
import update from 'immutability-helper';
const updateTodo = (list, updated) => {
const index = list.findIndex(item => return item.id === updated[0].id)
return update(list, {
[index]: {
$set: updated[0];
}
})
}
使用immutabilty-helper
程序的一个优点是,当高度嵌套数据时,它可以提供更多控制
更新(添加/删除)数组的最简单方法是使用拼接方法。
它以第一个参数为索引,第二个为要删除的元素号,以及下一个要添加的参数。
您正在做很多事情。 如果您知道索引,则无需操纵数组。
const items = [{id: 1, value: 1}, {id: 2, value: 2}, {id: 3, value: 3}];
items[2] = {id: 4, value: 4};
console.log(items); //last element changed
如果您没有副作用,请在复制数组之前
const items = [{id: 1, value: 1}, {id: 2, value: 2}, {id: 3, value: 3}];
const copy = items.slice();
copy[2] = {id: 4, value: 4};
return copy;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.