JavaScript sort()排序

sort()语法:

arrayObject.sort(fn);

参数fn可选,如果为空,则按字母顺序对数组中的元素进行排序,精确地说,是按照字符编码顺序进行排序。So,如果想实现精确排序,应把数组的元素转换成字符串在进行排序。

想按照其他标准排序,则需提供比较函数,没错,是函数,为函数提供两个参数,个人理解就是要排序的其中两个元素。为什么会有这样的猜测,看规则:

function fn (m,n){
        if(m<n)
            return -1;//小于,返回-1
        else if(m>n)
            return 1;//大于,返回1
        else return 0;//等于,返回0
    }

精简后:

function fn (m, n) {
    return m-n;
}

若 m 小于n, 则返回一个小于0的数值,m 会出现在 n 的前面;

若 m 等于 n, 则返回 0;

若 m 大于 n,则返回一个大于0的数值,m 会出现在 n 的后面;

说白了,如果函数fn返回的值为false,则按照升序排序,如果返回true,排序会降序排序;(m 和 n 按照排序后的顺序比较)

但是如果fn写成这样子呢?

function fn (m, n) {
      return m < n;
 }

如果fn的返回值为false,则按降序排序;如果返回true,排序会升序排序;(m 和 n 按照排序后的顺序比较)

那,如果想随机排序呢?

function fn () {
  return 0.5 - Math.random();
}

Math.random()返回一个0到1的随机数,0.5 - Math.random() 就会随机返回true和false,这样就实现随机排序了。

再一次感叹JS的灵活,一个sort就可以把排序搞定。

转载于:https://my.oschina.net/No5stranger/blog/220454

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值