JS數組的sort()方法已經可以滿足我們對數組的很多處理需求了,可以對數字、字母、字符串(按照字母)和布爾類型進行排序。
下面是具體的介紹:
- 對數字進行排序:
var arr = [10, 5, 40, 25, 1]; document.write(arr + "<br />"); document.write(arr.sort());
輸出:
[10, 5, 40, 25, 1] [1, 10, 25, 40, 5]
可以看出它並沒有按照數字大小進行排序,而是按照字符串的方式(先比較第一位,如果第一位相等依次比較后面的)。
- 對數字按照大小進行排序:
function sortNumber(a,b) { return a - b } var arr = [10, 5, 40, 25, 1]; document.write(arr + "<br />") document.write(arr.sort(sortNumber))
輸出:
[1, 10, 25, 40, 5] [1, 5, 10, 25, 40]
若a-b大於0,則b排在前面;若a-b小於0,則a排在前面。若想按照降序排序,函數內可改為“return b - a;”。
- 對字符串進行排序:
var arr = ["Alfredo", "Ronald", "salvador", "Alfredo", "Saryn"]; document.write(arr + "<br />"); document.write(arr.sort());
輸出:
["Alfredo", "Ronald", "salvador", "Alfredo", "Saryn"] ["Alexander", "Alfredo", "Ronald", "Saryn", "salvador"]
原理與例1類似。
- 同時按照兩種方式排序。需求是這樣的:“active”為1的排在前面,“active”為0的排在后面,然后分別按照“name”的字母順序進行排序:
var arr= [{ "name" : "Alfredo", "active": 0 }, { "name" : "Alexander", "active": 0 }, { "name" : "Ronald", "active": 1 }, { "name" : "salvador", "active": 0 }, { "name" : "Saryn", "active": 1 }]; arr.sort(function (a, b) { return b.name < a.name; }).sort(function (a, b) { return b.active - a.active });
輸出:
[{ "name" : "Ronald", "active": 1 }, { "name" : "Saryn", "active": 1 }, { "name" : "Alexander", "active": 0 }, { "name" : "Alfredo", "active": 0 }, { "name" : "salvador", "active": 0 }];
我們是這樣處理的:首先按照字母的順序進行排序,然后把“active”為1的放在前面,“active”為0的放在后面。