请用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; }