溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JS中sort方法的升序是a-b嗎

發(fā)布時間:2022-02-22 09:20:37 來源:億速云 閱讀:187 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“JS中sort方法的升序是a-b嗎”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“JS中sort方法的升序是a-b嗎”吧!

簡單使用 sort 方法的時候,是按位排序的,比如:

    var arr = [1, 22, 15, 32, 4, 5]
    arr.sort()//[1,15,22,32,4,5]

這樣的結(jié)果很明顯不能滿足大多數(shù)問題的需求,所以我們可以在調(diào)用sort方法的時候,傳入一個回調(diào)函數(shù),從而改變 sort 方法的排序方式。先放結(jié)果,下列兩次排序分別為 升序排序 和 降序排序 。

    var arr = [1, 22, 15, 32, 4, 5]
    arr.sort((a, b) => {return a - b}) // 升序排序 [1, 4, 5, 15, 22, 32]
    arr.sort((a, b) => {return b - a}) // 降序排序 [32, 22, 15, 5, 4, 1]

回調(diào)函數(shù)的格式為(a,b)=> { return xxx },ab為數(shù)組中任意兩個數(shù)

當返回值大于0時,a放在b的后面;

當返回值小于0時,a放在b的前面;

當返回值等于0時,ab位置不改變。

所以,為什么上面返回 a - b 就是升序,返回 b - a 就是降序了呢?

我們可以簡單舉個例子,類似于高中數(shù)學的分類討論。

當 a>b 時,

a - b > 0  ,排序結(jié)果 ===> b,a (升序)

b - a < 0  ,排序結(jié)果 ===> a,b (降序)

當 b>a 時,

a - b < 0  ,排序結(jié)果 ===> a,b (升序)

b - a > 0  ,排序結(jié)果 ===> b,a (降序)

當 a=b 時,

a - b = b - a =0 , 排序結(jié)果 ===> 保持不變

由此看出,

無論a>b還是b>a,return a-b 總能得到升序的結(jié)果,而 return b-a 總能得到降序的結(jié)果。

另外,return a-b / return b - a 只是一種在理解的基礎(chǔ)上簡便的寫法。

如果你還是不能理解,完全可以像這樣寫,下面也是一個升序排序:

因為返回值>0,把a放在后面,所以a>b時候,返回一個正數(shù)。后面理解同理。

    var arr = [1, 22, 15, 32, 4, 5]
    arr.sort((a, b) => {
      if (a > b) return 1;
      else if (a < b) return -1;
      else return 0;
    }); // [1,4,5,15,22,32]

到此,相信大家對“JS中sort方法的升序是a-b嗎”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI