Вы можете сделать это одним оператором с помощью Object.assign , например:
let myArray = [{id: 1, name: 'Boris'}, {id: 2}]
// id 3 does not exist no changes would be made to myArray
Object.assign(myArray.find(x => x.id == 3) || {}, {name: 'Foo'})
// id 1 is there so name would be changed to 'john'
Object.assign(myArray.find(x => x.id == 1) || {}, {name: 'john'})
console.log(myArray)
Идея состоит в том, чтобы предоставить Object.assign
object literal
, если Array.find
не находит объект с предоставленным идентификатором.
ДругойПреимущество этого заключается в том, что теперь вы передаете объект для обновления, чтобы вы могли легко обновлять более одного свойства одновременно:
let myArray = [{id: 1, name: 'Boris'}, {id: 2}]
// id 1 is there so name would be changed to 'john'
Object.assign(myArray.find(x => x.id == 1) || {}, {name: 'john', state: 'FL'})
console.log(myArray)