1. 程式人生 > >js中sort()方法的用法,引數以及排序原理

js中sort()方法的用法,引數以及排序原理

sort() 方法用於對陣列的元素進行排序。
語法:arrayObject.sort(sortby);引數sortby可選。規定排序順序。必須是函式。
注:如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,說得更精確點,是按照字元編碼的順序進行排序。要實現這一點,首先應把陣列的元素都轉換成字串(如有必要),以便進行比較。

如果想按照其他標準進行排序,就需要提供比較函式,該函式要比較兩個值,然後返回一個用於說明這兩個值的相對順序的數字。比較函式應該具有兩個引數 a 和 b,其返回值如下:
若 a 小於 b,在排序後的陣列中 a 應該出現在 b 之前,則返回一個小於 0 的值。
若 a 等於 b,則返回 0。
若 a 大於 b,則返回一個大於 0 的值。

例1:我們將建立一個數組,並按字母順序進行排序:

<script type="text/javascript">

var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"

document.write(arr + "<br />")
document.write(arr.sort())

</script>

輸出:

George,John,Thomas,James,Adrew,Martin
Adrew,George,James,John,Martin,Thomas

例2:我們將建立一個數組,並按字母順序進行排序:

<script type="text/javascript">

var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"

document.write(arr + "<br />")
document.write(arr.sort())

</script>

輸出:

10,5,40,25,1000,1
1,10,1000,25,40,5

請注意,上面的程式碼沒有按照數值的大小對數字進行排序,要實現這一點,就必須使用一個排序函式:

<script type="text/javascript">

function sortNumber(a,b)
{
return a - b
}

var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"

document.write(arr + "<br />")
document.write(arr.sort(sortNumber))

</script>

輸出:

10,5,40,25,1000,1
1,5,10,25,40,1000

相關推薦

js陣列的sort()方法用法引數以及排序原理

程式碼如下: function a(a,b){ if (a>b){ return 1; } } function b(){ var arr=[1,4,12,2,3,33

jssort方法用法引數以及排序原理

sort() 方法用於對陣列的元素進行排序。 語法:arrayObject.sort(sortby);引數sortby可選。規定排序順序。必須是函式。 注:如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,說得更精確點,是按照字元編碼的順序進行排序。要實現這一點,首先應把陣列的元素都轉換成字

初學者對jssort方法的理解。

定義和用法 sort() 方法用於對陣列的元素進行排序。 語法 arrayObject.sort(sortby) 引數 描述 sortby 可選。規定排序順序。必須是函式。 返回值 對陣列的引用。請注意,陣列在原陣列上進行排序,不生成副本。 說明 如果

jsonchange的使用實現功能選擇哪一張圖片顯示哪一張

pla option type oct 圖片 script www () height 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/x

pythonscatter函式用法matplotlib畫圖

scatter函式用於繪製散點圖。 scatter函式原型 matplotlib.pyplot.scatter(x,y,s=20,c='b',maker='o',cmpa=None,norm=None,vmin=None,vax=None,alpha=None,linewi

jstofixed方法

toFixed() 方法可把 Number 四捨五入為指定小數位數的數字。var num = new Number(13.37); document.write (num.toFixed(1))//13.4

js寫css方法記得加引號“ ”除非是數字

pos 引號 index size z-index roi absolut fff dex js寫css()方法,記得加引號“ ”,除非是數字。如: $("#android").css({ "position": "absolute", "z-index":

在定義類時何時需要重寫Object類equals方法

在比較兩個物件時可以使用==和 equals()。==用於比較兩個物件的引用地址是否相等,而equals()方法主要用於比較兩個物件的內容是否相等。和equals()的差別請參見“和equals()有什麼區別?”的解答。 在 Object 中已定義了 equals()方法,但是該方法直接採用

Android的mediaplayer的seekto方法用法

1、seekto方法的引數是毫秒,而不是秒,所以要注意引數傳遞 2、seekto方法是非同步方法,所以如果想要這樣寫: mediaPlayer.seekTo(10000); mediaPlayer.start(); 是沒有效果的 3、我個人測試seekto要寫在prep

java的API學習object的類equals方法的問題

一、什麼是API 即:Application Programing interface應用程式介面。就是javajdk中提供給我們使用的類,已經封裝好的,直接拿來用就行了。 二、Object類 object類是所有類的父類,在lang包中,lang包不用匯入。 介面中沒有構造方法

借鑑了一堆資料庫的group by 以及having count 用法做個筆記避免忘記

簡單的來說一個查詢語句,where 後面的條件是第一步篩選,如果後面有group  by + 欄位,having count()的話,就是第二步篩選,經過第二步篩選出來的結果每個欄位只有一條資料。group by 是把欄位相同所有資料來進行操作。第一步:先建立一個表第二步加入

JSmap與forEach用法

相同點: 1.都是迴圈遍歷陣列中的每一項 2.每次執行匿名函式都支援三個引數,引數分別為item(當前每一項),index(索引值),arr(原陣列) 3.匿名函式中的this都是指向window 4.只能遍歷陣列 不同點: map() map方法返回一個新

cocos2dx的Director類的getInstance方法解析即單例模式

接觸cocos2dx有段時間了,對於Director::getInstance()這樣的程式碼也有段時間的困惑了,為什麼要這樣寫,這是什麼意思呀?原來查了查資料才知道這是單例設計模式的應用。 單例設計模式 為什麼用單例設計模式:用window系統裡

ArrayListremove方法刪除長度大於5的元素之後下標重定位的問題

com 有一個 fad 就刪除 成了 位置 p s cnblogs 中心 1、問題闡述 需求: 有一個ArrayList數組,要求刪除長度大於5的字符串,如:arr = {"ab1","123ad","bca","dadfadf","dddaaa","你好啊","我來

ArrayList排序Sort方法(轉)

ray list pro 簡單 read 排序 adl array 簡單的 //使用Sort方法,可以對集合中的元素進行排序。Sort有三種重載方法,聲明代碼如下所//示。 public void Sort(); //使用集合元素的比較方式進行排序 public vo

pythonenumerate用法

bsp pos 元素 變量 lis 遍歷序列 rate too st3 先出一個題目:1.有一 list= [1, 2, 3, 4, 5, 6] 請打印輸出:0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 打印輸出, 2.將 list 倒序成 [6, 5, 4

js 的filter方法

nbsp undefine index 篩選 兼容 [] 返回 算法 插入 filter()方法使用指定的函數測試所有元素,並創建一個包含所有通過測試的元素的新數組。 filter()基本語法: arr.filter(callback[, thisA

10 字典enumerate用法

pytho rain lex cal 字典 rest num strip appdata li = {"alex"," aric","Alex","Tony","rain"}for i,j in enumerate(li,1): new_j = j.strip()

python星號*用法

這裡不說乘法,大家都知道 先看幾個測試語句: import numpy as np a=np.random.rand(2) print(a) print(*a) 輸出結果: [0.95721482 0.55708755] 0.9572148191916312 0.5570875

C++引用&用法和應用例項

對於習慣使用C進行開發的朋友們,在看到c++中出現的&符號,可能會犯迷糊,因為在C語言中這個符號表示了取地址符,但是在C++中它卻有著不同的用途,掌握C++的&符號,是提高程式碼執行效率和增強程式碼質量的一個很好的辦法。在 c++學習提高篇(3)---隱式