我必须更改数组中对象的属性值。该数组如下所示:
let myArrWithObjs = [
{ id: 1, selected: false },
{ id: 2, selected: false },
{ id: 3, selected: false }
];
我有一个看起来像这样的函数:
changeObjectVal = (id) => {
// here I need to first find the right object within the array
// and after that I should modify its aBoolean property to true
}
所以,在函数中我只知道 id 值。如果 id 参数的值为2
我需要获取数组中的第二个对象(因为它id
也是 2)。之后,我需要更改其selected
属性的值。
我找到了这个代码:
var selectedChartItemObj = myArrWithObjs.filter(function(obj) {
return obj.id == id;
});
问题是,这给了我对象的副本,而不是对象本身。
有没有办法以更短的方式修改正确对象的属性值?使用扩展运算符,我可以确保不会改变整个数组/对象,但首先我需要知道如何更改值。
Object.assign
找到对象后就可以使用了。该提议使用默认对象,但如果具有通缉的所有对象都id
存在,则可以省略它。
Object.assign(array.find(o => o.id === id) || {}, { selected: true });
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ find object
// ^^^^^^^^^^^^^^^^^^ update value
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句