Angular2 - 管道 - 过滤多个 JSON 值



我有一个嵌套的json对象数组,如下所示:

[{name: {en:'apple',it:'mela'}},{name:{en:'coffee',it:'caffè'}}]

我想要一个管道来过滤每个具有与给定参数匹配的值的对象。

为此,我创建了一个管道,它使用如下Array.prototype.filter

@Pipe({
    name: 'search'
})    
export class SearchPipe implements PipeTransform {
        transform(items: any[], args: string): any {
           if(!args){
            return items;
           } else {
           return items.filter(item => item.name.en.toLowerCase().indexOf(args[0]) !== -1); //returns every name.en values matching with args
           }
        }   
    }

这允许我按 name.en 进行过滤。如何使其能够过滤name.enname.it的值?

筛选时可以使用 OR 运算符。

@Pipe({
    name: 'search'
})    
export class SearchPipe implements PipeTransform {
    transform(items: any[], args: string): any {
      if (!args){
        return items;
      } else {
        return items
          .filter(item => 
            item.name.en.toLowerCase().indexOf(args[0]) !== -1 || item.name.it.toLowerCase().indexOf(args[1]) !== -1 
          );
      }
    }   
}

最新更新