如何在javascript中定义自定义排序功能?

时间:2011-02-15 11:04:59

标签: javascript function sorting autocomplete

我使用atocomplete.jquery插件来建议输入文本,结果我得到了这个数组:

['White 023','White','White flower', 'Teatr']

当我开始搜索从“te”子字符串开始的内容时,它会向我显示这样的数组排序:

'White','White 023','White flower', 'Teatr'

我需要这样的东西:

 'Teatr','White','White 023','White flower'

有什么想法吗?

4 个答案:

答案 0 :(得分:61)

可能是插件区分大小写。尝试输入Te而不是te。您可以将结果设置为不区分大小写。这question可能会有所帮助。

对于Array上的自定义排序功能,您可以使用任何JavaScript函数并将其作为参数传递给Array的{​​{1}}方法,如下所示:

sort()

More Info here on Array.sort.

答案 1 :(得分:20)

Objects试试这个:

function sortBy(field) {
    return function(a, b) {
        if (a[field] > b[field]) {
            return -1;
        } else if (a[field] < b[field]) {
            return 1;
        }
        return 0;
    };
}

答案 2 :(得分:5)

或更短

sortBy(field){
 return (a[field] > b[field]) - (a[field] < b[field])
}

答案 3 :(得分:1)

function msort(arr){
    for(var i =0;i<arr.length;i++){
        for(var j= i+1;j<arr.length;j++){
            if(arr[i]>arr[j]){
                var swap = arr[i];
                arr[i] = arr[j];
                arr[j] = swap;
            }
        }
    }
return arr;
}