JavaScript sort()排序

sort()语法:
数组

arrayObject.sort(fn);dom

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

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

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

精简后:spa

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

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

若 m 等于 n, 则返回 0;排序

若 m 大于 n,则返回一个大于0的数值,m 会出如今 n 的后面;字符串

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

可是若是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就能够把排序搞定。

相关文章
相关标签/搜索