排序例項
有時候後台返回給前端的資料並不是有序的,這時候就需要前端對所有資料進行排序處理,然後再進行分頁展示,通常我們選擇原生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 演示數字排序 ...