Фильтрация объектов массива для одного и того же ключа с несколькими значениями в angular 6 - PullRequest
0 голосов
/ 17 июня 2020

У меня есть массив объектов, хранящихся в переменной 'component'

component=[{id:1,type:Comp1},{id:2,type:Comp2},{id:3,type:Comp3},{id:4,type:Comp4},{id:5,type:Comp5}]

Я хочу отфильтровать его по типам 'Comp1' и 'Comp2'. Я пробовал следующий код

this.filterComponent=[{id:1,type:Comp1},{id:2,type:Comp2}];
for(let i=0;i<this.filterComponent.length;i++)
 this.component=  this.component.filter(ob => ob.type == this.filterComponenet[i].type)

Но он работает только для одного значения (если filterComponent содержит только один объект). Например,

this.filterComponent=[{id:1,type:Comp1}]

Как заставить его работать для нескольких значений. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Вы проглатываете результат предыдущего фильтра, вы должны отслеживать, например, с помощью функции concat или даже с дополнительным массивом.

Вы также можете использовать функцию filter следующим образом:

this.filterComponent = [{id:1,type:Comp1},{id:2,type:Comp2}];
this.component = this.component.filter(({type}) => this.filterComponenet.some(({type: t}) => t === type));
0 голосов
/ 17 июня 2020

Может это?

var component=[{id:1,type:'Comp1'},{id:2,type:'Comp2'},{id:3,type:'Comp3'},{id:4,type:'Comp4'},{id:5,type:'Comp5'}];

var out = [];

for(i=0; i < component.length; i++){
	if(component[i].type == 'Comp1' || component[i].type == 'Comp2'){
		out.push(component[i]);
	}
}

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