ค้นหาเว็บไซต์

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);