Слияние ответа json с уже инициализированным объектом javascript

avatar
ruppy
8 августа 2021 в 17:34
43
2
0

У меня есть два разных объекта, но у них есть некоторые общие свойства. Оба заполнены некоторыми значениями. Я хочу назначить значения объекта X для переопределения значений свойств Y, если они имеют один и тот же ключ в обоих объектах, иначе ничего не делать, кроме пустых ключей реквизита y.

Я могу достичь этой цели с помощью некоторых пользовательских операций сопоставления, но есть ли простой способ сделать это в javascript?

var x = {
  name: 'John',
  addressInformation: null
}

var y = {
  name: '',
  paymentInformation: {
    iban: '12313123',
    cardNumber: '1231231231'
  },
  addressInformation: {
    city: 'Berlin'
  }
}

Объединенный объект должен быть в моем сценарии:

y = {
  name 'John',
  paymentInformation: {
    iban: '12313123',
    cardNumber: '1231231231'
  },
  addressInformation: {
    city: 'Berlin'
  }
}

(Я поделился только упрощенной версией этих объектов. Есть много других свойств)

Источник
charlietfl
8 августа 2021 в 17:39
1

Какие исследования вы проводили и что пробовали? Все, что вы действительно показали, - это требование, но не было показано никаких попыток достичь этой цели.

Ответы (2)

avatar
Baruch
8 августа 2021 в 17:38
4

Object.assign или оператор расширения выполнит эту работу.


const newObject = Object.assign(y, x);
const newObject = {
  ...y,
  ...x
}

Кроме того, важно то, что сказал aweebit.

avatar
aweebit
8 августа 2021 в 17:56
3

It is important to note that, whereas { ...y, ...x } leaves y intact and merges y and x into a new object which is assigned to the variable newObject, Object.assign(y, x) mutates y и возвращает его без создания нового объекта, поэтому newObject === y оценивается как после его вызова.

Я бы разместил это как комментарий к ответу Баруха, но у меня пока недостаточно репутации, поэтому ваши голоса приветствуются :)