javascript中sort()方法怎麼用
在javascript中,sort()方法用於陣列排序,該方法能夠根據一定條件對陣列元素進行排序,語法格式「arrayObject.sort(sortby)」。如果在呼叫sort()方法時沒有傳遞參數,則按字母順序對數組中的元素進行排序。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
使用 sort() 將陣列排序
sort() 方法能夠依照某一條件對陣列元素進行排序。如果呼叫 sort() 方法時沒有傳遞參數,則依字母順序對陣列中的元素進行排序。
var a = ["a","e","d","b","c"]; //定义数组 a.sort(); //按字母顺序对元素进行排序 console.log(a); //返回数组[a,b,c,d,e]
使用 sort() 方法時,應該注意下面幾個問題。
1) 所謂的字母順序,實際上是根據字母在字元編碼表中的順序進行排列的,每個字元在字元表中都有一個唯一的編號。
2) 如果元素不是字串,則 sort() 方法試圖把陣列元素都轉換成字串,以便進行比較。
3) sort() 方法將根據元素值進行逐位比較,而不是根據字串的數量進行排序。
var a = ["aba","baa","aab"]; 定义数组 a.sort(); //按字母顺序对元素进行排序 console.log(a); //返回数组[aab,aba,baa]
在排序時,首先比較每個元素的第 1 個字符,在第 1 個字符相同的情況下,再比較第 2 個字符,以此類推。
4) 在任何情況下,陣列中 undefined 的元素都被排序在最後。
5) sort() 方法是在原始數組基礎上進行排序操作的,不會建立新的陣列。
sort() 方法不僅按字母順序進行排序,還可以根據其他順序執行操作。這時就必須為方法提供一個函數參數,該函數要比較兩個值,然後傳回一個用於說明這兩個值的相對順序的數字。排序函數應該有兩個參數 a 和 b,,其傳回值如下。
如果根據自訂評判標準,a 小於 b,在排序後的陣列中 a 應該出現在 b 之前,就傳回一個小於 0 的值。
如果 a 等於 b,就回傳 0。
如果 a 大於 b,就回傳一個大於 0 的值。
範例1
在下面範例中,將根據排序函數比較陣列中每個元素的大小,並按從小到大的順序執行排序。
function f(a,b) { //排序函数 return (a - b); //返回比较参数 } var a = [3,1,2,4,5,7,6,8,0,9]; //定义数组 a.sort(f); //根据数字大小由小到大进行排序 console.log(a); //返回数组[0,1,2,3,4,5,6,4,7,8,9]
如果按從大到小的順序執行,則讓傳回值取反即可。程式碼如下:
function f(a,b) { //排序函数 return -(a - b); //取反并返回比较参数 } var a = [3,1,2,4,5,7,6,8,0,9]; //定义数组 a.sort(f); //根据数字大小由小到大进行排序 console.log(a); //返回数组[9,8,7,6,5,4,3,2,1,0]
範例2
依奇偶性質排列陣列。
sort() 用法比較靈活,主要是函數排序比較。例如,如果根據奇偶數順序排序數組,只需要判斷順序函數中兩個參數是否為奇偶數,並決定排列順序。
function f(a, b) { //排序函数 var a = a % 2; //获取参数a的奇偶性 var b = b % 2; //获取参数b的奇偶性 if (a == 0) return 1; //如果参数a为偶数,则排在左边 if (b == 0) return -1; //如果参数b为偶数,则排在右边 } var a = [3,1,2,4,5,7,6,8,0,9]; //定义数组 a.sort(f); //根据数字大小由大到小进行排序 console.log(a); //返回数组[3,1,5,7,9,0,8,6,4,2]
sort() 方法在呼叫排序函數時,對每個元素值傳遞給排序函數,如果元素值為偶數,則保留其位置不動;如果元素值為奇數,則調換參數a和b 的顯示順序,從而實現對數組中所有元素執行奇偶排序。如果希望偶數排在前面,奇數排在後面,則只需要取回傳值。排序函數如下。
function f(a, b) { var a = a % 2; var b = b % 2; if (a == 0) return -1; if (b == 0) return 1; }
範例3
不區分大小寫排序字串。
在正常情況下,對字串進行排序是區分大小寫的,這是因為每個大寫字母和小寫字母在字元編碼表中的順序是不同的,大寫字母大於小寫字母。
var a = ["aB", "Ab", "Ba", "bA"]; //定义数组 a.sort(); //默认方法排序 console.log(a); //返回数组["Ab", "Ba", "aB", "bA"]
大寫字母總是排在左側,如果讓小寫字母總是排在左側,可以設計:
function f(a ,b) { return (a < b); } var a = ["aB", "Ab", "Ba", "bA"]; //定义数组 a.sort(); //默认方法排序 console.log(a); //返回数组["Ab", "Ba", "aB", "bA"]
對於字母比較大小時,JavaScript 是根據字元編碼大小來決定的,當為true 時,則傳回1;為false 時,則傳回-1。
如果不希望區分大小寫,大寫字母和小寫字母按相同順序排列,可以設計:
function f(a, b) { var a = a.toLowerCase; var b = b.toLowerCase; if (a < b) { return 1; } else { return -1; } } var a = ["aB", "Ab", "Ba", "bA"]; //定义数组 a.sort(); //默认方法排序 console.log(a); //返回数组["aB", "Ab", "Ba", "bA"]
如果要調整排列順序,則設定傳回值取反即可。
範例4
把浮點數和整數分開顯示。
function f(a, b) { //排序函数 if (a > Math.floor(a)) return 1; //如果a是浮点数,则调换位置 if (b > Math.floor(b)) return -1; //如果b是浮点数,则调换位置 } var a = [3.5555, 1.23456, 3, 2.11111, 5, 7, 3]; //定义数组 a.sort(f); //进行筛选 console.log(a); //返回数组[3,5,7,3,2.11111,1.23456,3.55555]
如果要調整排序順序,則設定回傳值取反即可。
【相關推薦:javascript學習教學】
#以上是javascript中sort()方法怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript中的HTTP狀態碼取得方法簡介:在進行前端開發中,我們常常需要處理與後端介面的交互,而HTTP狀態碼就是其中非常重要的一部分。了解並取得HTTP狀態碼有助於我們更好地處理介面傳回的資料。本文將介紹使用JavaScript取得HTTP狀態碼的方法,並提供具體程式碼範例。一、什麼是HTTP狀態碼HTTP狀態碼是指當瀏覽器向伺服器發起請求時,服務
