数组去重
今天专门腾时间对数组去重的问题进行了总结
1.es6 is very good
var arr = [1,2,3,8,5,4,9,6,"s",47,5,2,47,5,5,2,7];
var index = new Set(arr)
console.log(index)
2.es5中的indexOf
var arr = [1,1,2,3,3,3,3,4];
function find() {
var newarr = [];
for(var i = 0; i < arr.length; i++) {
if (newarr.indexOf(arr[i]) == -1 ) {
newarr.push(arr[i]);
}
}
console.log(newarr);
}
find(arr);
3.利用最简单的思想就是for循环,但是经过测试发现这种方法的去重效果特别差(如果有1000或10000个数)一次一次循环,不推介使用,在不同浏览器可以执行的时间不同
function sort1(arr) {
var flag = 0;
var result = new Array();
for(var i = 0; i < arr.length; i++) {
flag = 0;
for(var j = 0; j < arr.length; j++) {
if(result[j] == arr[i]) {
flag = 1;break;
}
}
if(flag == 0)
result.push(arr[i]);
}
return result;
}
4.第三方类库
jQuery: $.unique
underscore: _.unique
5. filter和indexOf相结合的方法
let arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0, 2, 2, 3];
function unique(arr){
return arr.filter((item, index, array) => array.indexOf(item) === index);
}
console.log(unique(arr)); // [1, "a", "b", "d", "e", 0, 2, 3]
先写这么多吧