Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回排序的ObservalArray的计算_Javascript_Knockout.js - Fatal编程技术网

Javascript 返回排序的ObservalArray的计算

Javascript 返回排序的ObservalArray的计算,javascript,knockout.js,Javascript,Knockout.js,我有一个计算的observable,它返回我的ObservalArray的过滤、排序版本,但排序根本不起作用 这是 答案 以下是更新信息您的排序函数没有正确调用可观察对象: .sort(function(a,b){ return a.name() == b.name() ? 0 : (a.name() < b.name() ? -1 : 1); }) 我也更新了您的,这似乎有效。您的排序函数没有正确调用可观察对象: .sort(function(a,b){

我有一个计算的observable,它返回我的ObservalArray的过滤、排序版本,但排序根本不起作用

这是

答案 以下是更新信息

您的排序函数没有正确调用可观察对象:

.sort(function(a,b){
        return a.name() == b.name() ? 0 : (a.name() < b.name() ? -1 : 1);
    })
我也更新了您的,这似乎有效。

您的排序函数没有正确调用可观察对象:

.sort(function(a,b){
        return a.name() == b.name() ? 0 : (a.name() < b.name() ? -1 : 1);
    })

我也更新了您的,这似乎有效。

正如@Paul Manzotti所指出的,您的排序函数无法正确访问名称属性。此外,filterValue未定义,因此函数在进行排序之前退出

像这样的东西可以让它工作:

    var filtered = filterValue ? ko.utils.arrayFilter(self.items(), function(item){
        return item.name().toLowerCase().contains(filterValue.toLowerCase());
    }) : self.items();

    return filtered.sort(function(a,b){
        return a.name() == b.name() ? 0 : (a.name() < b.name() ? -1 : 1);
    });

正如@Paul Manzotti所指出的,排序函数没有正确访问名称属性。此外,filterValue未定义,因此函数在进行排序之前退出

像这样的东西可以让它工作:

    var filtered = filterValue ? ko.utils.arrayFilter(self.items(), function(item){
        return item.name().toLowerCase().contains(filterValue.toLowerCase());
    }) : self.items();

    return filtered.sort(function(a,b){
        return a.name() == b.name() ? 0 : (a.name() < b.name() ? -1 : 1);
    });

您没有在任何地方声明和设置自变量。编辑哦,你是在摆弄-这是令人沮丧的问题时,包含不准确的代码:修复,很抱歉,你没有声明和设置自变量的任何地方。编辑哦,你是在摆弄-当问题包含不准确的代码时,这是令人沮丧的:修复了,很抱歉,排序只在问题中应用过滤器时进行,所以这就是我实现的。在过滤盒中键入a,布兰登将走在帕特前面。是的,这是真的;很难说出OP想要什么:-是的,这就是为什么我试着坚持提问的原因!不过你说得对,我想他们确实希望对整个事情进行排序——因为如果不进行过滤,排序会更有用!是的,它应该在每次读取计算值时进行排序,也就是在它最初加载时。好吧,我知道我做错了什么,如果filterValue没有值,那么我只是返回未排序的数组,但是如果有filterValue,那么它就被排序了。排序只在问题中应用筛选器时进行,这就是我实现的。在过滤盒中键入a,布兰登将走在帕特前面。是的,这是真的;很难说出OP想要什么:-是的,这就是为什么我试着坚持提问的原因!不过你说得对,我想他们确实希望对整个事情进行排序——因为如果不进行过滤,排序会更有用!是的,每次读取计算值时都应该对其进行排序,也就是它最初加载时。好的,我知道我做错了什么,如果filterValue没有值,那么我只是返回未排序的数组,但是如果有filterValue,那么它就被排序了。好的,我知道我做错了什么,如果filterValue没有值,那么我只是返回未排序的数组,但是如果有filterValue,那么它被排序。好的,我知道我做错了什么,如果filterValue没有值,那么我只是返回未排序的数组,但是如果有filterValue,那么它被排序。