js進行陣列排序

2021-10-05 12:44:47 字數 2926 閱讀 9934

排序例項

有時候後台返回給前端的資料並不是有序的,這時候就需要前端對所有資料進行排序處理,然後再進行分頁展示,通常我們選擇原生js提供的sort()來對陣列進行排序。

sort() 方法用於對陣列的元素進行排序,並返回陣列。預設根據字串unicode碼點順序來排序。

語法:array.sort(fun)

引數fun可以傳也可以不傳,規定排序為順序,func必須是函式。

注意:如果呼叫該方法時沒有傳入引數,將按字母順序對陣列中的元素進行排序,說得更精確點,就是按照字元編碼的順序進行排序。

如果想按照其他規則進行排序,就需要提供比較函式,該函式要比較兩個值,然後返回乙個用於說明這兩個值的相對順序的數字。比較函式應該具有兩個引數 a 和 b,其返回值如下:

若 a 小於 b,在排序後的陣列中 a 應該出現在 b 之前,則返回乙個小於 0 的值。

若 a 等於b,則返回 0。

若 a 大於 b,則返回乙個大於 0 的值。

總體來說就是:比較函式兩個引數a和b,返回a-b 公升序,返回b-a 降序

注意:原陣列會發生改變。

1.不傳引數,將不會按照數值大小排序,而是按照字元編碼的順序進行排序:

var arr1 =

['general'

,'tom'

,'bob'

,'john'

,'army'];

var resarr1 = arr1.

sort()

; console.

log(resarr1)

;//輸出 ["army", "bob", "general", "john", "tom"]

var arr2 =[30

,10,111,35

,1899,50

,45];

var resarr2 = arr2.

sort()

; console.

log(resarr2)

;//輸出 [10, 111, 1899, 30, 35, 45, 50]

2.傳入引數,實現公升序,降序:

//實現公升序:

var arr3 =[30

,10,111,35

,1899,50

,45];

arr3.

sort

(function

(a,b)

) console.

log(arr3)

;//輸出 [10, 30, 35, 45, 50, 111, 1899]

//實現降序:

var arr4 =[30

,10,111,35

,1899,50

,45];

arr4.

sort

(function

(a,b)

) console.

log(arr4)

;//輸出 [1899, 111, 50, 45, 35, 30, 10]

3.根據陣列中的物件的某個屬性值排序:

var arr5 =[,

,,,,

];arr5.

sort

(function

(a,b)

) console.

log(arr5)

;//輸出新的排序:

//

//

//

//

//

//

4.根據ascii碼從小到大排序:

var arr6 =[,

,]; arr6.

sort

(function

(a,b)})

; console.

log(arr6)

;//輸出 ["package","partnerid","prepayid"]

下面我們將會對後台返回的**資料進行排序,排序之前我們需要利用正規表示式對資料型別進行判斷,如果是數字型別,可以直接傳入引數實現公升序和降序;如果是日期型別,我們要先將該資料轉化為毫秒形式,再傳入引數進行排序;如果是字串型別,則要根據字串的ascii碼迴圈遍歷進行排序。

**如下:

//判斷時間格式為yyyy-mm-dd hh:mm:ss的正規表示式:

$scope.regtime=

/^[0-9]-[0-9]-[0-9] [0-9]:[0-9]:[0-9]$/

;//判斷數字型別的正規表示式:

$scope.regnum=

/^[0-9]*$/

;//公升序排序:

$scope.

asc=

function

(col,index)

else

if($scope.regnum.

test

(a[index][0

]))else}}

)}//降序排序:

$scope.

desc

=function

(col,index)

else

if($scope.regnum.

test

(a[index][0

]))else}}

)}

排序前效果如下:

排序後效果如下:

用bit map進行陣列排序

定義每個byte中有8個bit位 include memory.h define bytesize 8 void setbit char p,int posi p p 0x01 posi bytesize 將該bit位賦值1 return void bitmapsortdemo bufferlen這...

冒泡法進行陣列的排序

作 者 王穎 完成日期 2013 年 11 月 28 日 版 本 號 v1.0 輸入描述 無 問題描述 用冒泡法進行陣列的排序 程式輸出 略 問題分析 略 演算法設計 略 include using namespace std int bubble sort int a,int n 兩個函式bubb...

利用集合進行陣列的排序

筆者在學習vb中發現利用集合可以進行排序,優化後比冒泡法快得多。下面是完整的函式 演示了如何進行陣列的公升序或降序排列。option explicit dim x 100 as double dim y 100 as string private sub command1 click 演示數字排序 ...