2017-08-24 43 views
-1

我的问题是,我想在该地方使用年份过滤器,我把名称过滤器。角管过滤器使用JSON

import { PipeTransform, Pipe } from '@angular/core'; 

import {index} from './index'; 

@Pipe({ 
    name:'bookFilter', 
}) 

export class BookFilterPipe implements PipeTransform 

{ 

    transform(value:index[],filterBy:any):index[] 
    { 
     filterBy=filterBy?filterBy.toLocaleLowerCase():null; 
     return filterBy?value.filter((book:index)=> 

     book.Name.toLocaleLowerCase().indexOf(filterBy)!==-1):value 
     // here I want to use year filter in that line. 
    } 
} 
+0

所以不是'book.Name'你在代码中使用例如'book.year'?什么是问题? – DeborahK

+0

另外还要注意,使用管道进行过滤通常不是一个好主意。看到文档在这里:https://angular.io/guide/pipes#appendix-no-filterpipe-or-orderbypipe – DeborahK

+0

是的,我用book.year但之后,我可以把? –

回答

0

也许这将有助于理解此代码的作用,以便您可以根据需要进行更改。

transform(value:index[],filterBy:any):index[] 
{ 
    filterBy=filterBy?filterBy.toLocaleLowerCase():null; 
    return filterBy?value.filter((book:index)=> 

    book.Name.toLocaleLowerCase().indexOf(filterBy)!==-1):value 
    // here I want to use year filter in that line. 
} 

第一行是处理传入的过滤条件。如果设置了filterBy变量,它会将其转换为小写。这对字符串是必需的,以确保匹配不区分大小写。如果未设置filterBy变量,则将filterBy设置为null。那是什么x? y:z语法。如果x是真的,它就是y,否则它就是z。

第二行是使用JavaScript过滤功能(你可以找到我们的更多的是在这里:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

它首先重新检查filterBy的价值,因为我们可以将其设置为空第一行。它再次使用x? y:z语法。如果未设置x,则执行z,这是返回原始值的情况。这是有道理的,因为如果没有filterBy,你确实希望它返回整个数组。

如果filterBy 集合,它将调用该值的JavaScript过滤器函数,该值是要过滤的数组。过滤器获取数组中的每个元素并使用提供的箭头函数进行比较。在这个例子中,箭头的功能是:

book.Name.toLocaleLowerCase().indexOf(filterBy)!==-1) 

这行代码是用书的name属性并将其转换成小写的区分大小写的搜索。如果你想检查一个不同的属性,这里将是你要指定它的地方。如果你是在比较一个数字,你不需要将它转换为小写。

箭头函数使用JavaScript indexOf函数在提供的属性中查找filterBy字符串的位置。在这种情况下,它正在book.Name中查找它。你可以在这里找到更多关于indexOf的信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf

indexOf返回一个数字值,标识它找到filterBy字符串的位置,如果找不到则返回-1。

我们并不在乎它发现的字符串在哪里,我们只是在意它是!==到-1。

所以这就是这个代码是怎么回事。

希望这会让您更容易根据需要对其进行修改。

但是请注意:强烈建议您不要使用管道来执行过滤。

我对如何做过滤,而无需使用类似的语法上文这里所描述的管道的例子:Custom pipe to sort array of array