Сравнение массивов объектов в JavaScript

РЕДАКТИРОВАТЬ: Вы не можете swift-array перегружать операторы в текущих, распространенных ecmascript браузерных реализациях интерпретаторов array JavaScript.

Чтобы ответить vanillajs на первоначальный вопрос, один swift-array из способов сделать это, и arrays заметьте, это немного хак, просто arrays serialize the two arrays to JSON и затем сравнить две строки vanilla-javascript JSON. Это просто скажет вам, отличаются ecmascript ли массивы, очевидно, вы arrays можете сделать это для каждого из .js объектов в массивах, чтобы comparison увидеть, какие из них отличаются.

Другой bytearray вариант — использовать библиотеку, в jsonarray которой есть хорошие возможности javascript для сравнения объектов — я character-arrays использую и рекомендую MochiKit.


РЕДАКТИРОВАТЬ: The answer kamens gave также ecmascript заслуживает рассмотрения, поскольку javascript-library одна функция для сравнения bytearray двух заданных объектов будет ecmascript намного меньше, чем любая javascript библиотека для выполнения swift-array того, что я предлагаю (хотя javascript мое предложение, безусловно, будет javascript-library работать достаточно хорошо).

Вот javascript-library наивная реализация, которой vanilla-javascript может быть достаточно для array вас - имейте в виду, что arrays с этой реализацией могут .js возникнуть проблемы:

function objectsAreSame(x, y) {
   var objectsAreSame = true;
   for(var propertyName in x) {
      if(x[propertyName] !== y[propertyName]) {
         objectsAreSame = false;
         break;
      }
   }
   return objectsAreSame;
}

Предполагается, что vanilla-javascript оба объекта имеют одинаковый javascript-library точный список свойств.

О, и, вероятно, очевидно, что, к arrays лучшему или к худшему, я javascript-library принадлежу к лагерю с единственной ecmascript точкой возврата. :)

javascript

arrays

comparison

2022-11-21T14:44:19+00:00