Javascript通过对象的属性更新数组对象

ttt*_*ttt 1 javascript ecmascript-6 lodash

我有一组 person 对象,我想更新一个对象。

persons: [{
    id: '1',
    name: 'John',
    age: 12
    }, {
    id: '2',
    name: 'Tom',
    age: 13
    }, {
    id: '3',
    name: 'David',
    age: 14
}]
Run Code Online (Sandbox Code Playgroud)

我的功能是:

function updatePersonsWith(id, propName, value) {
   this.persons.???
}
Run Code Online (Sandbox Code Playgroud)

传递的参数是id我想更新的人,propName是的属性person的对象,可以是idname或者agevalue是我想,以取代的价值。

我想通过它的 id 找到一个对象并只更新数组的这个对象。

updatePersonsWith(2, age, 16)
Run Code Online (Sandbox Code Playgroud)

结果将是:

persons: [{
    id: '1',
    name: 'John',
    age: 12
    }, {
    id: '2',
    name: 'Tom',
    age: 16
    }, {
    id: '3',
    name: 'David',
    age: 14
}]
Run Code Online (Sandbox Code Playgroud)

可能是 ES6 或使用 lodash。

paq*_*ash 5

尝试:

let person = this.persons.find((person) => {
   return person.id === id;
});

if (person && person[propName]) {
 person[propName] = value;
}
Run Code Online (Sandbox Code Playgroud)

工作示例:

let person = this.persons.find((person) => {
   return person.id === id;
});

if (person && person[propName]) {
 person[propName] = value;
}
Run Code Online (Sandbox Code Playgroud)