В Angular 6 я пытаюсь получить каждый объект массива и сравнить его с объектами другого массива.Если они совпадают, удалите объект из второго массива.
Исходя из этого , у меня есть следующий код:
existing.forEach((existingitem, existingindex, existingfeatures) => {
newdata2 = newdata.filter(item => (existingitem.values_.id != item.properties.id && existingitem.values_.cat != item.properties.cat));
});
Итак, если бы у меня были такие, как
var existing= [
{ name : "John", values_:{id:1, cat:true} },
{ name : "Alice", values_:{id:2, cat:false} }
];
и newdata
var newdata= [
{ name : "Mike", properties:{id:7, cat:true} },
{ name : "Jenny", properties:{id:2, cat:false} }
];
сравните properties
из newdata
с values_
из existing
, и те, которые не совпадают, в конечном итоге получат newdata2
, поэтому newdata2
теперь составляет
var newdata2= [
{ name : "Mike", properties:{id:7, cat:true} }
];
Это может выглядеть просто, но я получаю
ОШИБКА TypeError: newdata_1.filter не является функцией
со ссылкой на строку
newdata2 = newdata.filter(item => (existingitem.values_.id != item.properties.id && existingitem.values_.cat != item.properties.cat));
Что мне здесь не хватает?Пожалуйста посоветуй.
Спасибо
РЕДАКТИРОВАТЬ
Я не устанавливаю в своем коде любую переменную как newdata_1
, и все значения с именем newdata
или newdata2
находятся в одном блокекода.Я также запутался в названии newdata_1
.Если я изменю имя, например newdatafeat
, ошибка станет ERROR TypeError: newdatafeat_1.filter is not a function
.Понятия не имею.
Спасибо