【问题标题】:Ionic 3 pipe to filter list by comparing 2 arrays通过比较 2 个数组来过滤列表的离子 3 管道
【发布时间】:2019-02-15 19:40:20
【问题描述】:

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

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

HTML:

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

管道:

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***
    }

  });
}

}

【问题讨论】:

    标签: arrays angular ionic-framework filter pipe


    【解决方案1】:

    你可以试试这样的:

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

    【讨论】:

    • 是的,我对您的解决方案进行了一些编辑以解决我的问题,非常感谢!
    【解决方案2】:

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

    希望对您有所帮助 :) 如果这不是你的意思,请告诉我。

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

    管道:

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

    【讨论】:

      猜你喜欢
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-05
      • 1970-01-01
      • 2019-06-06
      相关资源
      最近更新 更多