volkov_p_v
@volkov_p_v
FrontEnd разработчик

Как найти разницу между двумя объектами/массивами?

У меня есть два массива с объектами. Они должны быть одинаковые, то метод equals (или т.п. из какой-нибудь библиотеки), говорит, что они разные.
Визуальный просмотр ни чего не дал (т.е. их свойства и значения одинаковые).
Какой есть способ узнать в каком месте и чем они отличаются?
В проекте используется lodash, mocha, chai, sinon.
  • Вопрос задан
  • 2253 просмотра
Пригласить эксперта
Ответы на вопрос 2
тут обсуждалось
Ответ написан
Комментировать
abyrkov
@abyrkov
JavaScripter
Скорее всего, дело в том, что массивы и объекты сравниваются по ссылкам. Проще говоря, если a и b ссылаются на один и тот же массив/объект, они равны. Иначе - нет.
Как найти разницу?
Смотря какой массив главный и что мы ищем. Предположим, что первый и ищем несовпадения значений. Тогда задача решается так:
function compare(arr, arr2) {
  var l = arr.length;
  for(var i = 0; i < l; ++i)
     for(var a in arr[i])
       if(arr2[i][a] !== arr[i][a]) return [i, a, arr[i][a], arr2[i][a]];
  return false;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы