Фильтр не работает внутри forEach, в угловых 6 - PullRequest
0 голосов
/ 04 декабря 2018

В 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.Понятия не имею.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...