今天专门腾时间对数组去重的问题进行了总结
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: $.uniqueunderscore: _.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]
先写这么多吧