Как вернуть объект, который является результатом перезаписанных элементов объекта - PullRequest
0 голосов
/ 16 мая 2019

Как вернуть объект, который является результатом перезаписи элементов объекта

Я хочу вернуть только те элементы, которые firstObject перезаписал в secondObject, используя Ecmascript6

var firstObject = {
  one: 1,
  four: 55,
  six: 6
}

var secondObject = {
  one: 1,
  two: 2,
  three: 3,
  four: 4
}

returnObject = { four:55 }

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Вы можете получать записи, фильтровать и отображать новые объекты.

var firstObject = { one: 1, four: 55, six: 6 },
    secondObject = { one: 1, two: 2, three: 3, four: 4 }, 
    result = Object.assign({}, ...Object
        .entries(firstObject)
        .filter(([k, v]) => k in secondObject && secondObject[k] !== v)
        .map(([k, v]) => ({ [k]: v }))
    );

console.log(result);
1 голос
/ 16 мая 2019

Если вы хотите проверить, какие свойства присутствуют как на объектах, так и на различиях в значениях, вы можете использовать Object.entries для преобразования первого объекта в массив. Используйте reduce для циклического перемещения по массиву, проверки и создания нового объекта.

var firstObject = {
  one: 1,
  four: 55,
  six: 6
}

var secondObject = {
  one: 1,
  two: 2,
  three: 3,
  four: 4
}

var returnObject = Object.entries(firstObject).reduce((c, [k, v]) => {
  if (secondObject[k] !== undefined && v !== secondObject[k]) c[k] = v;
  return c;
}, {});

console.log(returnObject);

Один код лайнера:

var returnObject = Object.entries(firstObject).reduce((c, [k, v]) => secondObject[k] !== undefined && v !== secondObject[k] ? Object.assign(c, {[k]: v}) : c, {})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...