Array.sort()方法将数组中的元素排序并返回排序后的数组。当不带参数调用sort()时,数组元素以字母表顺序排序(如有必要将临时转化为字符串进行比较):
var a = new Array("banana", "cherry", "apple");
a.sort()
var s = a.join(","); // s == "apple,banana,cherry"
如果数组包含undefined元素,它们会被排到数组的尾部。
为了按照其他方式而非字母表顺序进行数组排序,必须给sort()方法传递一个比较函数。该函数决定了它的两个参数在排好序的数组中的先后顺序。假设第一个参数应该在前,比较函数应该返回一个小于0的数值。反之,假设第一个参数应该在后,函数应该返回一个大于0的数值。并且,假设两个值相等(也就是说,它们的顺序无关紧要),函数应该返回0.因此,例如,用数值大小而非字母表顺序进行数组排序,代码如下:
var a = [33, 4, 1111, 222];
a.sort(); // 字母表顺序: 1111, 222, 33, 4
a.sort(function (a, b) { // 数值顺序: 4, 33, 222, 1111
return a - b; // 根据顺序,返回,返回负数、0、正数
});
a.sort(function(a,b){return b-a}); // 数值大小相反的顺序
注意,这里使用匿名函数表达式非常方便。既然比较函数只使用一次,就没有必要给他们命名了。
另外一个数组排序的例子,也许需要对一个字符串数组执行不区分大小写的字母表排序,比较函数首先将参数都转化为小写字符串(使用toLowerCase()方法),再开始比较:
var a = ['ant', 'Bug', 'cat', 'Dog'];
a.sort(); // 区分大小写的排序:['Bug', 'Dog', 'ant', 'cat']
a.sort(function (s, t) { // 不区分大小写的排序
var a = s.toLowerCase();
var b = t.toLowerCase();
if (a < b) return -1;
if (a > b) return 1;
return 0;
}); // => ['ant', 'Bug', 'cat', 'Dog']
链接到:JavaScript-JS数组方法有哪些
![佐助](https://i-blog.csdnimg.cn/blog_migrate/3676acec0890834ffcc0420ea59b4de6.jpeg)