JavaScript-JS数组方法之Array.sort()

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数组方法有哪些

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值