Как динамически обновить объект в Javascript? - PullRequest
1 голос
/ 29 мая 2020

У меня есть объект, и я хочу обновить его новыми данными. Но если один из ключей имеет значение undefined, я хочу, чтобы он имел то же значение, которое было определено ранее.

let obj 

obj = {
  name: 'Bill'
  job: 'dev'
  age: 22
}

const newObj = {
  name: 'Sam',
  age: 33
}

Object.keys(obj).forEach(key => {
  obj[key] = newObj[key];
});

Я хочу, чтобы obj возвращал:

{
  name: "Sam"
  job:'dev',
  age: 33,

}

Но он возвращает:

{
  age: 33,
  job: undefined,
  name: "Sam"
}

Кроме того, это поможет вернуть в том же порядке, что и оригинал.

Ответы [ 3 ]

1 голос
/ 29 мая 2020

Вы можете просто объединить объекты, используя синтаксис распространения , например:

let obj 

obj = {
  name: 'Bill',
  job: 'dev',
  age: 22,
}

const newObj = {
  name: 'Sam',
  age: 33,
}

obj= {...obj, ...newObj}
console.log( obj )
0 голосов
/ 29 мая 2020
let obj 

obj = {
  name: 'Bill',
  job: 'dev',
  age: 22
}

const newObj = {
  name: 'Sam',
  age: 33
}

obj= {
  ...obj,
  ...newObj
}

Спред решит вашу проблему. Свойства newObject переопределяют свойства объекта. (те же свойства для переопределения)

0 голосов
/ 29 мая 2020

можно так:

Object.keys(obj).forEach(key => {
 obj[key] = newObj[key] ? newObj[key] : obj[key];
});
...