排序
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 }