简体   繁体   English

angular2-管道-过滤多个json值

[英]angular2 - pipe - filter multiple json values

I have an array of nested json objects like this: 我有一个像这样的嵌套json对象数组:

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

I want to have a pipe which filters every object having values matching with a given argument. 我想要一个管道,用于过滤具有与给定参数匹配的值的每个对象。

On this purpose, I created a pipe which uses a Array.prototype.filter as following: 为此,我创建了一个使用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

           }
        }   
    }

This allows me to filter by name.en. 这使我可以按name.en进行过滤。 How can I make it able to filter the values name.en and name.it too? 如何使它能够过滤值name.enname.it

You can use OR operator when filtering. 过滤时可以使用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 
          );
      }
    }   
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM