Вы мутируете Record1
, пока вы повторяете его с циклом for
, начиная с индекса 0 и увеличивая его вверх - это означает, что некоторые элементы будут пропущены.(например, если вы break
при k
из 0, то элемент новый с индексом 0 после сращивания никогда не будет проверен.) Итерация с end из Record1
вместо этого, чтобы индекс k
, который был вставлен, всегда ссылался на элемент с соответствующим индексом:
Record1 = [{"ID":"938"},{"ID":"939"}];
Record2 = [{"IDN":"938"},{"IDN":"939"}];
for (var k = Record1.length - 1; k >= 0; k--) {
for (var l = 0; l < Record2.length; l++) {
if (Record1[k].ID == Record2[l].IDN) {
Record1.splice(k, 1);
break;
}
}
}
console.log(''+ JSON.stringify(Record1));
Или, что еще лучше, используйте Set
для уменьшения сложности вычислений и filter
для создания нового массива:
Record1 = [{"ID":"938"},{"ID":"939"}];
Record2 = [{"IDN":"938"},{"IDN":"939"}];
const IDNs = new Set(Record2.map(({ IDN }) => IDN));
const Record1WithoutDupes = Record1.filter(({ ID }) => !IDNs.has(ID));
console.log(Record1WithoutDupes);