我有一组人物对象,我想更新其中一个对象。
persons: [{
id: '1',
name: 'John',
age: 12
}, {
id: '2',
name: 'Tom',
age: 13
}, {
id: '3',
name: 'David',
age: 14
}]
我的函数是:
function updatePersonsWith(id, propName, value) {
this.persons.???
}
传入的参数是我要更新的人的id
,propName
是person
对象的属性,可以是 id
, name
or age
, value
是我要替换的值。
我想通过它的 id 找到一个对象并只更新数组中的这个对象。
updatePersonsWith(2, age, 16)
结果是:
persons: [{
id: '1',
name: 'John',
age: 12
}, {
id: '2',
name: 'Tom',
age: 16
}, {
id: '3',
name: 'David',
age: 14
}]
可以是 ES6 或使用 lodash。
最佳答案
尝试:
let person = this.persons.find((person) => {
return person.id === id;
});
if (person && person[propName]) {
person[propName] = value;
}
工作示例:
var persons = [{
id: '1',
name: 'John',
age: 12
}, {
id: '2',
name: 'Tom',
age: 13
}, {
id: '3',
name: 'David',
age: 14
}];
function update(id, prop, val) {
var person = persons.find(function(p) {
return p.id === id;
});
if (person && person[prop]) {
person[prop] = val;
}
}
update('1', 'age', 77);
console.log(persons[0].age);
关于Javascript通过对象的属性更新数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42386263/