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就可以把排序搞定。

你可能感兴趣的:(Sort排序)