Сравнение нескольких объектов с использованием javascript - PullRequest
0 голосов
/ 20 марта 2020

У меня есть массив объектов (несколько объектов), и я хочу сравнить их с динамически добавляемыми объектами.

В настоящее время мой код выглядит как

public compare(row) {
    for (var i = 0; i < row.length; i++) {
      var a = row[i];
      console.log(a, 'first array !!!!!!!');

      var b = row[i + 1];
      console.log(b, 'Second array !!!!!!!');

      if (a != undefined && b != undefined) {
        return JSON.stringify(a) === JSON.stringify(b);
      }
      else {
        return false;
      }

    }
  }

, но я могу сравнить только первые две записи. Есть ли способ сравнить объекты динамически, используя javascript. Заранее спасибо ...

1 Ответ

0 голосов
/ 20 марта 2020

Ваш l oop всегда возвращается в конце первого l oop. Вы можете возвращать false только внутри l oop, если обнаружите несоответствие, в противном случае пусть l oop продолжится. Если он не находит никаких несоответствий, то вы знаете, что ваши объекты совпадают, и вы можете вернуть true.

public compare(row) {
  for (var i = 0; i < row.length - 1; i++) {
    var a = row[i];
    var b = row[i + 1];
    if (!a || !b) {
      continue;
    }

    if (JSON.stringify(a) !== JSON.stringify(b)) {
      return false;
    }
  }

  return true;
}

Я также установил l oop, чтобы он продолжался только при i < row.length - 1, так как в row[row.length].

DEMO

отсутствует элемент

var equal = [
 { a: 1 },
 undefined,
 { a: 1 },
 { a: 1 }
];

var notEqual = [
 { a: 1 },
 undefined,
 { a: 1 },
 { a: 1 },
 { a: 2 }
];

function compare(row) {
  for (var i = 0; i < row.length - 1; i++) {
    var a = row[i];
    var b = row[i + 1];

    if (!a || !b) {
      continue;
    }
    
    if (JSON.stringify(a) !== JSON.stringify(b)) {
      return false;
    }
  }

  return true;
}

console.log('should be true: ', compare(equal));
console.log('should be false: ', compare(notEqual));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...