2016-02-24 108 views
2

以下是我的json。是否可以嵌套ko.utils.arrayFilter?

[ 
    { 
    heading: "name1", 
    viewable: true, 
    items: [ 
     { 
     name: "name2", 
     status: true 
     }, 
     { 
     name: "name1-2", 
     status: false 
     } 
    ] 
    }, 
    { 
    heading: "name2", 
    viewable: false, 
    items: [ 

    ] 
    }, 
    { 
    heading: "name3", 
    viewable: true, 
    items: [ 
     { 
     name: "name3-1", 
     status: true 
     }, 

    ] 
    }, 
    { 
    heading: "name4", 
    viewable: true, 
    items: [ 

    ] 
    } 
] 

我此JSON轉換成可觀察到的陣列,我想在嵌套數組項過濾此陣列由存在名稱()。我嘗試使用嵌套ko.utils.arrayFilter,但它沒有給我任何輸出。它總是給我一個空陣列。

通過嵌套數組元素過濾數組的最佳方式是什麼?

對不起,我的英語不好。

回答

1

您需要進行測試,您可以在過濾器中調用。喜歡的東西:

function nameInList(name, list) { 
    var result = false; 

    ko.utils.arrayForEach(list, function(item) { 
    if (item.name === name) { 
     result = true; 
    } 
    }); 

    return result; 
} 

那麼您的過濾器可能看起來像

ko.utils.arrayFilter(myList, function (item) { 
    return nameInList('name2', item.items); 
}); 
+0

謝謝你的回答,有沒有)的方式在那裏我能得到父母陣列始終但是孩子陣列項目(應根據過濾條件? –

+1

當然。從一個名爲'result'的空數組開始。使用'arrayForEach'來遍歷父數組,使用'arrayForEach'來遍歷子數組,並測試項目。如果測試結果爲true,則將該項目推送到'result'數組。 –

+0

今天早上我做了這個!我的問題是我只想要用戶在父數組下列出的書籍不是全部。 –

相關問題