请用js原生代码写出数组去重的函数,并考虑到执行效率。
/**indexOf去重 */ function fun(arr){ var array=[]; arr.forEach(function(value,index) { if(array.indexOf(value)<0){ array.push(value); } }, this); return array; }
/**利用set去重 */ function fun(arr){ var set=new Set(arr); var array=Array.from(set); console.log(array instanceof Array); return array; }
/**哈希表去重 */ function fun(arr){ var array=[]; var hash={}; arr.forEach(function(value,index) { if(!hash[value]){ hash[value]=true; array.push(value); } }, this); return array; }
var cArray = [1,2,3,3,5,1,2]; Array.prototype.unique = function() { //alert("独一"); var jsonArray = {}; var newArray = []; for(var i = 0; i < this.length; i++) { //alert(i+"=="+this[i]); if(jsonArray[this[i]]!= 1) { jsonArray[this[i]] =1; newArray.push(this[i]); } } return newArray; } // 这句必须放在原型后面,切记 var carray = cArray.unique(); alert(carray);
function deleteSame (arr){ for(var i=0; i<arr.length-1; i++){ for(var j=i+1; j<arr.length;){ if(arr[i]==arr[j]){ arr.splice(j,1); }else{ j++; } } } } function deleteSame (arr){ for(var i=0; i<arr.length;){ if(arr.indexOf(arr[i])==i){ i++; }else{ arr.splice(i,1); } } }
function quchong(arr){ var newarr = []; for(i of arr){ if(newarr.indexOf(i)==-1){ newarr.push(i) } } return newarr; }