Asp.net mvc 4 Durandaljs:如何过滤ko.array

Asp.net mvc 4 Durandaljs:如何过滤ko.array,asp.net-mvc-4,single-page-application,durandal,Asp.net Mvc 4,Single Page Application,Durandal,我是durundaljs的新手 我想知道我如何过滤一个ko.Array 定义(['services/logger','data/data','functions/func'],函数(logger,data,func){ var vm={ 清单:ko.observableArray([]) }; 返回虚拟机; }); 我想筛选列表中的项目并将其显示在表中 感谢Knockout有一些实用功能,这些功能没有文档记录,但它们存在于库中,用于帮助过滤数组 以下是处理阵列的所有实用程序方法的完整列表: ko

我是durundaljs的新手

我想知道我如何过滤一个ko.Array

定义(['services/logger','data/data','functions/func'],函数(logger,data,func){ var vm={ 清单:ko.observableArray([]) }; 返回虚拟机; });

我想筛选列表中的项目并将其显示在表中


感谢

Knockout有一些实用功能,这些功能没有文档记录,但它们存在于库中,用于帮助过滤数组

以下是处理阵列的所有实用程序方法的完整列表:

ko.utils.arrayFilter
ko.utils.arrayFirst
ko.utils.arrayForEach
ko.utils.arrayIndexOf
ko.utils.arrayMap
ko.utils.arrayPushAll
ko.utils.arrayRemoveItem
ko.utils.compareArrays
ko.utils.unwrapObservable
Ryan Niemeyer写了一篇关于如何使用其中一些的好文章


方法1 下面是一个快速入门的示例:

var newList = ko.utils.arrayFilter(list(), function(item) {
   return item.price > 10;
});
这将创建价格超过10的项目的
新列表。
然后,您可以通过传递新列表来更改当前列表:

list(newList);

方法2 另一个选项是查找要删除的项目。假设您要删除价格超过10的所有项目:

var rList = ko.utils.arrayFilter(list(), function(item) {
   return item.price > 10;
});
下一步,您可以拨打:

list.removeAll(rList);

方法3 正如他们所说,比喻给猫剥皮的方法不止一种:

list.remove(function(item) { return item.price > 10 });

给你。。 我相信还有很多方法可以做到这一点。如果您需要一些更高级的数组过滤方法,我建议您