sort默认是按第一个数字比较,相同再按第二个数组比较,加入遇到这样的数组arr = [1,6,8,2,3,4,11]; 

我们先看一下直接sort的结果:

console.log(arr.sort()); // [1, 11, 2, 3, 4, 6, 8]

这也是11排在1后面的原因,个位数的排序还可以直接sort()排序,十位以上再直接sort就不是按从小到大拍的了!那怎么办呢?

sort()方法可以接受一个函数参数来实现数字的大小比较

该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字,比较函数应该具有两个参数 a 和 b,其返回值如下:

  1. 若返回值<=-1,则表示 A 在排序后的序列中出现在 B 之前。
  2. 若返回值>-1 && <1,则表示 A 和 B 具有相同的排序顺序。
  3. 若返回值>=1,则表示 A 在排序后的序列中出现在 B 之后。

所以从小到大排序为:

console.log(arr.sort((n1,n2) => (n1 - n2))); // [1, 2, 3, 4, 6, 8,11]

 如果要按从小到大排序,function sortNum(a, b) { return a-b};

如果要按从大到小排序,function sortNum(a, b) { return b-a};

如果打乱数组,function sortNum() { return 0.5 - Math.random()};

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。
转载请注明来源:sort()排序问题 - Qui-Note