为什么在javascript中排序函数返回错误的顺序

时间:2017-05-03 03:27:04

标签: javascript arrays sorting

我在javascript中使用sort函数来排序数组,这里是我的数组

var arr=[1118, 8446, -9046, -1719, 41, 279, 11, 2047, 3855, 4925, 7380, 8477]; arr.sort((a,b) => {return a-b > 0});

但是订单错了,结果就是

[11, 1118, -9046, -1719, 41, 279, 2047, 3855, 4925, 7380, 8446, 8477]

这是截图。所以我错了?

enter image description here

2 个答案:

答案 0 :(得分:2)

  

如果提供compareFunction,则根据compare函数的返回值对数组元素进行排序。如果a和b是要比较的两个元素,那么:

如果compareFunction(a,b)小于0,则将a排序为低于b的索引,即a先到先得。 如果compareFunction(a,b)返回0,则保持a和b相对于彼此保持不变,但是对于所有不同的元素进行排序。注意:ECMAscript标准不保证这种行为,因此并非所有浏览器(例如可追溯到至少2003年的Mozilla版本)都尊重这一点。 如果compareFunction(a,b)大于0,则将b排序为低于a的索引。 当给定一对特定元素a和b作为其两个参数时,compareFunction(a,b)必须始终返回相同的值。如果返回不一致的结果,则排序顺序未定义。 因此,比较函数具有以下形式:

function compare(a, b) {
  if (a is less than b by some ordering criterion) {
    return -1;
  }
  if (a is greater than b by the ordering criterion) {
    return 1;
  }
  // a must be equal to b
  return 0;
}

答案 1 :(得分:1)



xs