我知道在这个社区已经多次询问过这个问题,但我很难看到笔记本电脑的显示器,因为我已经工作了很长时间。一些帮助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});
感谢您的帮助。
答案 0 :(得分:2)
要对可以使用的子数组的总和进行排序:
<强> 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函数中指定辅助数组位置。
<强> 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]});