排序
Sort方法
在JavaScript中,數組Array本身有具有Sort方法可以對數組的元素進行排序,并返回數組。Sort排序默認根據字符串的Unicode碼點進行排序。
var scores = [1,10,2,4,21]
scores.sort() // [1, 10, 2, 21, 4]
Sort方法可以接受一個函數compareFunction
作為參數,如果沒有指明compareFunction
,那么元素會按照轉換為的字符串的Unicode位點進行排序;比較時數字會被先轉為字符串。
如果指明了compareFunction
,那么數組會按照調用該函數的返回值進行排序,即 a和b 是兩個要被比較的元素
- 如果
compareFunction(a,b)
小于0,那么a會被排列在b之前; - 如果
compareFunction(a,b)
等于0,那么a和b的位置不變。 - 如果
compareFunction(a,b)
大于0,那么b在a之前。
function compareFunction(a,b){
if(a>b){
return 1
}
if(a<b) {
return -1
}
return 0
}
如果只是簡單的Number進行排序,那么可以寫成
function compFun(a,b) {
return a-b
}
在函數Sort內部,各家實現各不相同,目前了解到最多的應該是使用的快排。
去重
Javascript本身并沒有對數組的原型方法。
對數組去重進行簡單的總結。
-
通過ES6方法去重
var arr = [1,2,4,2,2,1,5,2,1,9] var newarr = [...new Set(arr)]
-
indexOf
通過數組的
indexof
方法對數組元素進行去重。function unique(arr) { var newarr = [] for(let i =0;i<arr.length;i++) { if(newarr.indexOf(arr[i])=== -1) { newarr.push(arr[i]) } } return newarr }
-
hash去重
function unique(arr) { var newarr = [] var obj = {} for(let i=0;i<arr.length;i++){ if(obj[arr[i]] !== 1) { newarr.push(arr[i]) obj[arr[i]] = 1 } } return newarr }
?