我想从数组中更新一个对象。这是我当前的工作代码它正在更新数组
中的对象var equipment = this.equipments.find((e) => e.id === this.currentItem.id);
// this property is getting updated successfully in the array
equipment.countryId = this.currentItem.countryId;
但是这个对象中有很多属性所以我尝试使用扩展运算符将对象完全复制到现有对象中,就像这样
var equipment = this.equipments.find((e) => e.id === this.currentItem.id);
equipment = { ...equipment, ...this.currentItem };
但这不起作用。它不更新数组中的对象。
可能是因为扩展操作符完全创建了一个新对象而没有更新现有对象?
是否有一种方法,如果不扩展操作符更新与新值的对象的所有属性,而不需要显式地写它的所有属性?
可能是因为扩展操作符完全创建了一个新对象而没有更新现有对象?
是的,你需要返回一个新的数组并替换一个元素,这可以使用array.map
:
this.equipments = this.equipments.map(equipment => {
if(equipment.id === this.currentItem.id){
return { ...equipment, ...this.currentItem };
}
return equipment;
});