是否有类似AngularJS';用于Knockout.js的过滤器?

是否有类似AngularJS';用于Knockout.js的过滤器?,angularjs,angular-filters,knockout.js,javascript,knockout-3.0,Angularjs,Angular Filters,Knockout.js,Javascript,Knockout 3.0,具有内置的概念,因此很容易将数据集简化为与用户输入匹配的元素 有类似的产品可供选择吗 当然,我可以使用普通的老Javascript自己实现它,但我不是性能专家,所以我自己的解决方案可能会非常慢。我想您正在寻找类似以下函数的函数:ko.utils.arrayMapko.utils.arrayForEachko.utils.arrayFilterko.utils.arrayFirst 你可以在网站上找到这些和更多的东西 它对您有帮助吗?我想您正在寻找类似以下函数:ko.utils.arrayMapk

具有内置的概念,因此很容易将数据集简化为与用户输入匹配的元素

有类似的产品可供选择吗


当然,我可以使用普通的老Javascript自己实现它,但我不是性能专家,所以我自己的解决方案可能会非常慢。

我想您正在寻找类似以下函数的函数:
ko.utils.arrayMap
ko.utils.arrayForEach
ko.utils.arrayFilter
ko.utils.arrayFirst

你可以在网站上找到这些和更多的东西


它对您有帮助吗?

我想您正在寻找类似以下函数:
ko.utils.arrayMap
ko.utils.arrayForEach
ko.utils.arrayFilter
ko.utils.arrayFirst

你可以在网站上找到这些和更多的东西

它对你有帮助吗?

是的,已经创建了敲除插件

这类似于角度过滤器,您可以将贴图或过滤器应用于源集合,以生成另一个集合以绑定到UI

来自项目github自述文件的此示例演示了用法,并解释了如何有效执行
映射
过滤器
回调:

映射

更多信息如下。现在,这里有一个简单的例子:

var sourceItems = ko.observableArray([1, 2, 3, 4, 5]);
有一个普通的可观测阵列。现在让我们假设我们想要跟踪 这些值的平方:

var squares = sourceItems.map(function(x) { return x*x; });
现在,
squares
是一个可观察的数组,包含
[1,4,9,16,25]
。让我们修改源数据:

sourceItems.push(6);
// 'squares' has automatically updated and now contains [1, 4, 9, 16, 25, 36]
这适用于源数据的任何转换,例如:

sourceItems.reverse();
// 'squares' now contains [36, 25, 16, 9, 4, 1]
这个库的关键点是这些转换是高效完成的。具体来说,您的回调函数 只有在严格必要时才调用映射(通常是 仅适用于新添加的项目)。将新项目添加到源时 数据,我们不需要重新映射现有的数据。当你重新订购时 在源数据中,输出顺序会相应地更改,而不会更改 重新映射任何内容

如果你只是将数字平方,那么这个效率可能不会有多大影响, 但是,当您映射自定义对象的复杂嵌套图时,它 以最少的时间执行每个映射更新可能很重要 工作

过滤

除了
映射
,该插件还提供
过滤器

var evenSquares = squares.filter(function(x) { return x % 2 === 0; });
// evenSquares is now an observable containing [36, 16, 4]

sourceItems.push(9);
// This has no effect on evenSquares, because 9*9=81 is odd

sourceItems.push(10);
// evenSquares now contains [36, 16, 4, 100]
同样,您的
filter
回调仅在严格执行时才被调用 必要的。重新订购或删除源项目不需要任何 重新过滤-输出只需更新以匹配。仅新增 源项必须接受
过滤器
回调

是的,已经创建了敲除插件

这类似于角度过滤器,您可以将贴图或过滤器应用于源集合,以生成另一个集合以绑定到UI

来自项目github自述文件的此示例演示了用法,并解释了如何有效执行
映射
过滤器
回调:

映射

更多信息如下。现在,这里有一个简单的例子:

var sourceItems = ko.observableArray([1, 2, 3, 4, 5]);
有一个普通的可观测阵列。现在让我们假设我们想要跟踪 这些值的平方:

var squares = sourceItems.map(function(x) { return x*x; });
现在,
squares
是一个可观察的数组,包含
[1,4,9,16,25]
。让我们修改源数据:

sourceItems.push(6);
// 'squares' has automatically updated and now contains [1, 4, 9, 16, 25, 36]
这适用于源数据的任何转换,例如:

sourceItems.reverse();
// 'squares' now contains [36, 25, 16, 9, 4, 1]
这个库的关键点是这些转换是高效完成的。具体来说,您的回调函数 只有在严格必要时才调用映射(通常是 仅适用于新添加的项目)。将新项目添加到源时 数据,我们不需要重新映射现有的数据。当你重新订购时 在源数据中,输出顺序会相应地更改,而不会更改 重新映射任何内容

如果你只是将数字平方,那么这个效率可能不会有多大影响, 但是,当您映射自定义对象的复杂嵌套图时,它 以最少的时间执行每个映射更新可能很重要 工作

过滤

除了
映射
,该插件还提供
过滤器

var evenSquares = squares.filter(function(x) { return x % 2 === 0; });
// evenSquares is now an observable containing [36, 16, 4]

sourceItems.push(9);
// This has no effect on evenSquares, because 9*9=81 is odd

sourceItems.push(10);
// evenSquares now contains [36, 16, 4, 100]
同样,您的
filter
回调仅在严格执行时才被调用 必要的。重新订购或删除源项目不需要任何 重新过滤-输出只需更新以匹配。仅新增 源项必须接受
过滤器
回调


核心KO库中没有内置这样的东西。因此,您需要在常规js函数中或使用ko.computeds实现“过滤器”逻辑。然而,有一个插件名为:它提供了一个类似角度的过滤器能力:我想这个插件就是你要找的。它允许您创建可观察数组,这些数组是通过应用于另一个可观察数组的
map
filter
函数创建的。这是否回答了您的问题?核心KO库中没有内置这样的东西。因此,您需要在常规js函数中或使用ko.computeds实现“过滤器”逻辑。然而,有一个插件名为:它提供了一个类似角度的过滤器能力:我想这个插件就是你要找的。它允许您创建可观察数组,这些数组是通过应用于另一个可观察数组的
map
filter
函数创建的。这是否回答了您的问题?