日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS使用sort进行升序和降序排序

發布時間:2024/3/26 javascript 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS使用sort进行升序和降序排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果指明了 compareFunction ,那么數組會按照調用該函數的返回值排序。即 a 和 b 是兩個將要被比較的元素:

  • 如果 compareFunction(a, b) 小于 0 ,那么 a 會被排列到 b 之前;
  • 如果 compareFunction(a, b) 等于 0 , a 和 b 的相對位置不變。備注: ECMAScript 標準并不保證這一行為,而且也不是所有瀏覽器都會遵守(例如 - Mozilla 在 2003 年之前的版本);
  • 如果 compareFunction(a, b) 大于 0 , b 會被排列到 a 之前。
  • compareFunction(a, b) 必須總是對相同的輸入返回相同的比較結果,否則排序的結果將是不確定的。

所以,比較函數格式如下:

function compare(a, b) {if (a < b ) { // 按某種排序標準進行比較, a 小于 breturn -1;}if (a > b ) {return 1;}// a must be equal to breturn 0; }

要比較數字而非字符串,比較函數可以簡單的以 a 減 b,如下的函數將會將數組升序排列

function compareNumbers(a, b) { //升序return a - b; }function compareNumbers(a, b) { //降序return b-a; }

sort 方法可以使用 函數表達式 方便地書寫:

var numbers = [4, 2, 5, 1, 3]; numbers.sort(function(a, b) {return a - b; }); console.log(numbers);也可以寫成: var numbers = [4, 2, 5, 1, 3]; numbers.sort((a, b) => a - b); console.log(numbers);// [1, 2, 3, 4, 5]

對象可以按照某個屬性排序:

var items = [{ name: 'Edward', value: 21 },{ name: 'Sharpe', value: 37 },{ name: 'And', value: 45 },{ name: 'The', value: -12 },{ name: 'Magnetic' },{ name: 'Zeros', value: 37 } ];// sort by value items.sort(function (a, b) {return (a.value - b.value) });// sort by name items.sort(function(a, b) {var nameA = a.name.toUpperCase(); // ignore upper and lowercasevar nameB = b.name.toUpperCase(); // ignore upper and lowercaseif (nameA < nameB) {return -1;}if (nameA > nameB) {return 1;}// names must be equalreturn 0; });

對非 ASCII 字符排序
當排序非 ASCII 字符的字符串(如包含類似 e, é, è, a, ? 等字符的字符串)。一些非英語語言的字符串需要使用 String.localeCompare。這個函數可以將函數排序到正確的順序。

var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu']; items.sort(function (a, b) {return a.localeCompare(b); });// items is ['adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé']

使用映射改善排序
compareFunction 可能需要對元素做多次映射以實現排序,尤其當 compareFunction 較為復雜,且元素較多的時候,某些 compareFunction 可能會導致很高的負載。使用 map 輔助排序將會是一個好主意。基本思想是首先將數組中的每個元素比較的實際值取出來,排序后再將數組恢復。

// 需要被排序的數組 var list = ['Delta', 'alpha', 'CHARLIE', 'bravo'];// 對需要排序的數字和位置的臨時存儲 var mapped = list.map(function(el, i) {return { index: i, value: el.toLowerCase() }; })// 按照多個值排序數組 mapped.sort(function(a, b) {return +(a.value > b.value) || +(a.value === b.value) - 1; });// 根據索引得到排序的結果 var result = mapped.map(function(el){return list[el.index]; });

總結

以上是生活随笔為你收集整理的JS使用sort进行升序和降序排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。