如何在Javascript中对对象数组进行排序?

时间:2013-02-28 03:32:08

标签: javascript arrays multidimensional-array

我知道在这个社区已经多次询问过这个问题,但我很难看到笔记本电脑的显示器,因为我已经工作了很长时间。一些帮助PLZ。

我想对这个对象数组进行排序,以获得自动插入数组的所有给定值的最高值和最低值。

var catesArrayHolder = new Array();
for(var chartGetter=1; chartGetter <= num; chartGetter++){
    var catesArray = new Array();
    for(var chartGetterArray=1; chartGetterArray <= series; chartGetterArray++){
        idOfInput  = "cate"+chartGetter+"_series"+chartGetterArray;
        values = $("#"+idOfInput).val();
        if(values == ""){
            values = 0;
        }

        catesArray.push(values);
    }
    catesArrayHolder.push(catesArray);
}

此功能不适合我... 它适用于一维数组

catesArrayHolder.sort(function(a,b){return a-b});

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

修改

要对可以使用的子数组的总和进行排序:

Example

<强> JS

var twoDArray = [[9,1],[5,3],[8,2]];

twoDArray.sort(function(a, b){
    //sort by sum of sub array
    return eval(a.join('+')) - eval(b.join('+')); 
}); 

alert(JSON.stringify(twoDArray)); 

所以你的代码看起来像是:

catesArrayHolder.sort(function(a, b){
    return eval(a.join('+')) - eval(b.join('+')); 
}); 

原始

看起来你正在尝试对二维数组进行排序。

您需要在sort函数中指定辅助数组位置。

Example

<强> JS

var twoDArray = [[9,1],[5,3],[4,2]];

twoDArray.sort(function(a, b){
    //Sort by the first value in the sub array
    return a[0] - b[0]; 
}); 

alert(JSON.stringify(twoDArray)); 

twoDArray.sort(function(a, b){
    //sort by the second value in the sub array
    return a[1] - b[1]; 
}); 

alert(JSON.stringify(twoDArray)); 

因此,要使代码正常工作,您需要具备以下功能:

var posToSortOn = 0; //position in the sub arrays that dictates sort precedence 
catesArrayHolder.sort(function(a,b){return a[posToSortOn]-b[posToSortOn]});