angular - Angular2 filtrering av array av objekt baserat på en array av objekt med hjälp av pipe
Jag har svårt att förstå hur man filtrerar en matris av objekt baserat på en annan matris av objekt med hjälp av Angular-pipen. Det jag har hittills är en pipe som filtrerar baserat på ett enda argument.
Jag har 2 arrayer, array1 och array2, som båda innehåller komplexa objekt. Den filtrerade arrayen (array1) ska endast innehålla objekt där array1.value === array2.value
Min kod hittills:
import { Injectable, Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'arrayFilter'
})
@Injectable()
export class AttributeFilterPipe implements PipeTransform {
transform(array: any[], filterFrom: any[]): any {
return array.filter(item => item.value.indexOf(filterFrom[0].value) !== -1);
}
}
Svar #1
Om array 1 bara ska innehålla objekt som finns i array 2:
return array.filter(item => filterFrom.some(f => f.value == item.value));
Om array 1 endast ska innehålla objekt som finns i array 2 på samma index:
return array.filter((item, index) => item.value == filterFrom[index].value);
