关于js array的sort排序的问题

function compare(value1, value2) {
  if (value1 < value2) {
    return -1;
  } else if (value1 > value2) {
    return 1;
  } else {
    return 0;
  }
};
let values = [0,1,10,15,5];
values.sort(compare);

为啥返回-1,1,0就能实现给数组排序?

阅读 1.8k
2 个回答

相信 rtfm 能给你答案

如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前;
如果 compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变。备注: ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本);
如果 compareFunction(a, b) 大于 0 , b 会被排列到 a 之前。
compareFunction(a, b) 必须总是对相同的输入返回相同的比较结果,否则排序的结果将是不确定的。

为了方便写代码啊,像你这么写代码多麻烦啊,假设 list 中的内容全部是 数值 ,类似 [1,3,2,5,1] 这种,代码就可以这样写;

[1,3,2,5,1].sort( ( a, b ) => a - b );

你看多么简练。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题