Javascript根据对象的属性更新数组对象

时间:2017-02-22 08:28:51

标签: javascript ecmascript-6 lodash

我有一个人物对象数组,我想更新一个对象。

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.???
}

传递的参数是我要更新的人idpropNameperson对象的属性,可以是idnameagevalue是我要替换的值。

我希望通过它的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。

2 个答案:

答案 0 :(得分:4)

您可以使用:



let persons =  [{
    id: '1',
    name: 'John',
    age: 12
    }, {
    id: '2',
    name: 'Tom',
    age: 13
    }, {
    id: '3',
    name: 'David',
    age: 14
}];


function updatePersonsWith(id, propName, value) {
   let item = persons.find((v) => {
      return v.id == id;
   });
   if (item && item.hasOwnProperty(propName)) {
      item[propName] = value;
   }
};

updatePersonsWith(2, 'age', 16);
console.log(persons)




答案 1 :(得分:1)

使用plt.table(... , bbox=(0.2,0.6,0.2,0.2)) ,您可以这样做,

lodash