2017-08-24 54 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