您的位置:首页 > 其它

数组去重方法总结

2016-05-05 10:10 309 查看
网上数组去重的方法很多,这里做下总结,便于日后复习。

方法一:

先创建一个空数组(result),用来保存最终的结果;

创建标记(isRepeat),用于判断是否存在重复项;

循环原数组(arr)中的每个元素;

再对(result)中的每个元素进行二次循环,判断是否有与之相同的元素。如果有,把标记(isRepeat)设置为true,并跳出循环;

根据标记(isRepeat)判断是否向数组(result)中添加元素;

返回这个新数组(result)。

// 数组去重-方法一
function removeRepeat01(arr){
var result =[],
     isRepeat,
len_arr = arr.length;
for(var i=0; i < len_arr; i++){
isRepeat = false;
for(var j=0; j < result.length; j++){
if(arr[i] === result[j]){ //这里用'==='
isRepeat = true;
break;
}
}
if(!isRepeat){
result.push(arr[i]);
}
}
return result;
}


注:由于需要多次重复循环比较,此方法的执行效率较低,下面是第二种方法。

方法二:引用类似hash表的思想

//数组去重方法二
function removeRepeat02(arr) {
var hash = {},
len = arr.length,
str_mark = '',
result = [];

for (var i = 0; i < len; i++){
//判断数组中是否存在字符串
if(typeof arr[i]=='string'){
str_mark = '_isStr';
}else {
str_mark = '';
}
//去重
if (!hash[arr[i] + str_mark]){
hash[arr[i] + str_mark] = true;
result.push(arr[i]);
}
}
return result;
}


测试:

var aArr = [1,2,'222',222,3,4,5,5,5,6,6,7,8];
console.log(removeRepeat01(aArr));
console.log(removeRepeat02(aArr));


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: