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就能夠把排序搞定。

相關文章
相關標籤/搜索