2017-07-21 15 views
0

私は本の中にページの配列を持っています。私は見つけるためにフィルタを使用しているページのインデックスを探したいと思います。私はそれを機能する関数に耕作していますが、indexOfやfindIndexなどのフィルターを組み合わせることはできません。私は以下を使用しページを削除し、その後フィルターで配列の項目のインデックスを取得する角型JavaScript

getPage(pageNumber: number) { 
    return this.pages.filter(page => page.pageNumber == pageNumber)[0]; 
    } 

は、特定のページを取得するには、私はこのコードを使用

deletePage() { 
    let deletedPageLocation = this.findPageIndex(); 
    this.pages.splice(deletedPageLocation, 1); 
    this.pagesChanged.next(this.pages.slice()); 
    } 

    findPageIndex() { 
    for(var i=0; i < this.pages.length; i++) { 
     if (this.pages[i].pageNumber == this.currentPage) { 
     return i; 
     } 
    } 

私のような何かに簡素化したいと思います:

let deletedPageLocation = this.pages.indexOf(this.pages.filter(page => page.pageNumber == pageNumber)[0]); 

しかし、値を返す方法を見つけることができませんでした。助言がありますか?

答えて

0
var found = $filter('filter')($scope.pages, { pageNumberinPages: pagenumberSearching },true); 

あなたの検索に一致するオブジェクトの配列が返されます。

こちらがお役に立てば幸いです。

0

また、findindexOfを使用して行うこともできます。フィルタを使うよりもずっと簡単です。ここでのサンプルコードは、あなたの質問の面でです:

deletePage(item){ 
    let deleteItem = this.pages.find(this.findIndexToUpdate, item.pageId); 
    let index = this.pages.indexOf(deleteItem); 

    if(index > -1){ 
     this.pages.splice(index, 1); 
    } 


    } 

    findIndexToUpdate(item) { 
     console.log("this: " + this) 
     return item.pageId === this; 
    } 

Plunker demo

関連する問題