У меня есть два массива объектов, и я хочу сравнить объекты первого массива с объектами второго массива.Если они совпадают, я использую splice
, чтобы удалить объект из второго массива.
У меня есть следующий код
existing.forEach((existingitem, existingindex, existingfeatures) => {
(newdatafeat.features).forEach((newitem, newindex, newfeatures) => {
console.log('existing index-name --- new index-name', existingindex ,' - ',existingitem.values_.name,' - ',newindex,' - ',newitem.properties.name,'-----');
if (existingitem.values_.id == newitem.properties.id && existingitem.values_.cat == newitem.properties.cat){
console.log(' index to remove - ', newindex); (newdatafeat.features).splice(newindex,1);
}
})
});
Итак, если existing
равно
var existing= [
{ info: true, values_:{id:1, cat:true, name : "John"} },
{ info : true, values_:{id:2, cat:false, name : "Alice"} }
];
и newdatafeat.features
равно
var newdatafeat= {
status:scanned,
features : [ { info: true, properties:{id:1, cat:true, name : "Mike"} },
{ info : false, properties:{id:22, cat:false,name : "Jenny"} } ]
};
Затем Майк из newdatafeat.features
должен быть удален.
Ошибка в том, что каждый элемент массива newdatafeat.features
с индексом 0 не удаляется.В цикле я вижу index to remove - 0
, но Майк никогда не удаляется.Я знаю, потому что если я console.log
newdatafeat.features
после циклов, Майк там
Это внутри кода angular6.
Что мне здесь не хватает?
Спасибо