javascript中数组去重
1、遍历数组,双重循环,如果新数组中不存在则push到新数组
1 Array.prototype.distinct = function(){ 2 // 原数组 3 var arr = this; 4 // 新数组 5 var result = []; 6 var len = arr.length; 7 var i = 0; 8 var j = 0; 9 for(i = 0; i < len; i++){ 10 for(j = i + 1; j < len; j++){ 11 if(arr[i] === arr[j]){ 12 j = ++i; 13 } 14 } 15 result.push(arr[i]); 16 } 17 return result; 18 }
2、对原数组直接通过splice操作,删除重复值,注意在删除重复值的时候,相应的修改数组的长度
Array.prototype.distinct = function (){ var arr = this; var i = 0; var j = 0; var len = arr.length; for(i = 0; i < len; i++){ for(j = i + 1; j < len; j++){ if(arr[i] == arr[j]){ arr.splice(j,1); len--; j--; } } } return arr; };
3、利用es6的set方法
1 var arr = [1,2,3,3,4]; 2 var set = new Set(arr); 3 var newArr = Array.from(set);
4、filter+indexof(代码简洁,效率较好)
1 let arr = [1, 'a', 'a', 'b', 'd', 1, 0, 2, 2]; 2 function unique(arr){ 3 return arr.filter((item, index, array) => array.indexOf(item) === index); 4 }
最近正好碰到了数组去重,老生常谈咯,但是当自己上手写的时候还是会有这那的问题哟。
Fighting! Fighting!