Ionic 3管道通过比较2个数组来过滤列表

时间:2018-09-11 10:10:45

标签: arrays angular ionic-framework filter pipe

我需要编写过滤器PIPE组件的帮助,该组件将仅过滤和显示包含所选搜索数组词的职位。 找到了一种使用1个搜索值返回的方法,但我需要它在数组中返回多个搜索结果

jobCategory=['admin','clerk','driver','labour','helper']
selectedCategory=['driver','helper']

HTML:

<ion-item *ngFor="let posting of (postingList | postingFilter:'jobCategory':selectedCategory)"  >

PIPE:

export class PostingFilterPipe implements PipeTransform { 
transform(items: any[], field : string, value : string): any[] {  
  if (!items) return [];
  if (!value || value.length == 0) return items;
  return items.filter(it => {
    for (let index = 0; index < value.length; index++) {
      const element = value[index]; ***STUCK***
    }

  });
}

}

2 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

export class PostingFilterPipe implements PipeTransform { 
  transform(items, field : string, value): any[] {  
    if (!items) return [];
    if (!value || value.length == 0) return items;
    return items.filter(it => value.filter(val => it[field].includes(val)).length > 0)
  });
}

答案 1 :(得分:0)

我想知道在这种情况下是否根本需要字段参数/参数。 我没有对此进行测试,但是我会尝试将所选类别的数组作为参数传递。然后尝试使用Array.includes()仅返回已选择的作业类别(在所选类别数组中)。

希望有帮助:) 让我知道这是否不是您的意思。

jobCategory=['admin','clerk','driver','labour','helper']
selectedCategory=['driver','helper']

PIPE:

export class PostingFilterPipe implements PipeTransform { 
  // items => array to filter through
  // field => field name (not needed??)
  // array of selected categories
  transform(items: any[], field : string, selectedValues: string[]): any[] {  
    if (!items) return [];
    if (!value || value.length == 0) return items;

    return items.filter(item => {
      return value.includes(item);
    });
  }
}

HTML:

<ion-item *ngFor="let posting of (postingList | postingFilter:selectedCategory)"  >