我知道这个问题在这个社区中已经被问过很多次了,但由于我工作了很长时间,我几乎看不到笔记本电脑的显示器。请提供一些帮助。
我想对这个对象数组进行排序,以获得自动插入到数组中的所有给定值的最高值和最低值。
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});
感谢您的帮助。
最佳答案
编辑
要对子数组的总和进行排序,您可以使用:
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('+'));
});
原始
看起来您正在尝试对二维数组进行排序。
您需要在排序函数中指定辅助数组位置。
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]});
关于javascript - 如何在 Javascript 中对对象数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15126924/