2016-02-24 180 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

今天早上我做了这个!我的问题是我只想要用户在父数组下列出的书籍不是全部。 –

相关问题