Javascript 按两个值对数组排序
可能重复:Javascript 按两个值对数组排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,可能重复: 编写脚本时,数组排序出现问题。 我有一个对象数组: [{gold: false, range: 1601}, {gold: true, range: 13}, {gold: false, range: 375}, {gold: true, range: 601} 但它应该是这样的: [{gold: true, range: 13}, {gold: true, range: 601}, {gold:false, range: 375}, {gold: false, range: 1
编写脚本时,数组排序出现问题。 我有一个对象数组:
[{gold: false, range: 1601}, {gold: true, range: 13}, {gold: false, range: 375}, {gold: true, range: 601}
但它应该是这样的:
[{gold: true, range: 13}, {gold: true, range: 601}, {gold:false, range: 375}, {gold: false, range: 1601}]
yourArray.sort(function(a, b){
return a["gold"] == b["gold"] ? a["range"] - b["range"] : a["gold"] ? -1 : 1;
});
我想得到一个数组,其中键按范围递增进行排序。但是如果金键值为真,那么它们是第一个。试试看
var arr = [{gold: false, range: 1601}, {gold: true, range: 13}, {gold: false, range: 375}, {gold: true, range: 601}],
sorter = function(a, b) {
if(a.gold && !b.gold) {return -1;}
if(!a.gold && b.gold) {return 1;}
return a.range - b.range;
};
arr.sort(sorter);
使用类似以下内容:
[{gold: true, range: 13}, {gold: true, range: 601}, {gold:false, range: 375}, {gold: false, range: 1601}]
yourArray.sort(function(a, b){
return a["gold"] == b["gold"] ? a["range"] - b["range"] : a["gold"] ? -1 : 1;
});
甚至这个:
yourArray.sort(function(a, b){
return b["gold"] - a["gold"] || a["range"] - b["range"];
});
第二种方法非常酷(实际上),您可以对对象中的任意数量的字段使用此模式,只需按其重要性排序即可。如果某些字段应按升序-比a[“…”]-b[“…”],如果按降序-比b[“…”]-a[“…”]详细解释您的问题无问题,Сцццццццццц!))