angular - การกรองอาเรย์ของออบเจ็กต์ใน Angular2 ตามอาเรย์ของออบเจ็กต์โดยใช้ pipe
ฉันกำลังพยายามทำความเข้าใจวิธีการกรองอาเรย์ของวัตถุตามอาเรย์ของวัตถุอื่นโดยใช้ Angular pipe สิ่งที่ฉันมีจนถึงตอนนี้คือ pipe ที่กรองตามอาร์กิวเมนต์เดียว
ฉันมีอาเรย์ 2 ตัว, array1 และ array2, ซึ่งทั้งคู่มีวัตถุซับซ้อน อาเรย์ที่ถูกกรองแล้ว (array1) ควรมีเฉพาะวัตถุที่ค่า array1.value === array2.value
โค้ดของฉันจนถึงตอนนี้:
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);
}
}
คำตอบ #1
ถ้าอาร์เรย์ 1 ควรมีเฉพาะวัตถุที่อยู่ในอาร์เรย์ 2:
return array.filter(item => filterFrom.some(f => f.value == item.value));
ถ้าอาเรย์ 1 ควรมีเฉพาะวัตถุที่อยู่ในอาเรย์ 2 ที่ดัชนีเดียวกัน:
return array.filter((item, index) => item.value == filterFrom[index].value);
