Ваш 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));