Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按两个值对数组排序_Javascript_Arrays_Sorting - Fatal编程技术网

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[“…”]

详细解释您的问题无问题,Сцццццццццц!))