2017-02-23 9 views
1

Есть ли способ обновить одно поле в объекте в массиве объектов?Обновление одного поля объекта в массиве объектов в Javascript/Lodash

PeopleList= [ 
    {id:1, name:"Mary", active:false}, 
    {id:2, name:"John", active:false}, 
    {id:3, name:"Ben", active:true}] 

Например, если установить значение Джона в true.

Я попытался сделать это в Lodash, но он не вернет правильный результат. Он возвращает обертку lodash.

 updatedList = _.chain(PeopleList) 
     .find({name:"John"}) 
     .merge({active: true}); 

ответ

2

Ну вы даже не нужно lodash для этого с ES6:

PeopleList.find(people => people.name === "John").active = true; 
//if the record might not exist, then 
const john = PeopleList.find(people => people.name === "John") 
if(john){ 
    john.active = true; 
} 

Или, если вы не хотите, чтобы мутировать первоначальный список

const newList = PeopleList.map(people => { 
    if(people.name === "John") { 
    return {...people, active: true}; 
    } 
    return {...people}; 
}); 
+0

Я думаю, что Lodash лучше для новичков, поэтому им не нужно заниматься транспиляцией. – bcherny

Смежные вопросы