Как глубоко сравнить два объекта javascript и вернуть все различия, включая новые добавленные массивы, и с тем же исходным форматом?

#javascript

#javascript

Вопрос:

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

Я также попробовал несколько плагинов deep-diff amp; Lodash.Lodash возвращает мне разницу в той же строке, но не в каком-либо другом добавленном поле.

 const a = {
"id":1,
"name":xyz
}

const b = {
"id":1,
"name":xyz abc,
"address":pqr
}
  

Я ожидаю, что результат: {"name":xyz abc","address":pqr}

Ответ №1:

     Object.keys(a).forEach(x => { if (Object.keys(b).every(y => b[y] !== a[x])) { diff[x] = a[x] } })
    Object.keys(b).forEach(x => { if (Object.keys(a).every(y => a[y] !== b[x])) { diff[x] = b[x] } })
    console.log(diff)
  

Ответ №2:

Вот пример того, что вы хотите, используя функции Lodash.

https://gist.github.com/Yimiprod/7ee176597fef230d1451

Комментарии:

1. Привет… Я пробовал это раньше, но он не возвращал вновь добавленные массивы или любое другое добавленное поле… Он возвращал разницу только в той же строке.