自己第一时间想到的是第三种方法,利用两层循环来判断是否给新数组添加新元素,这种属于“笨办法”,然后在网上看了一些方法,觉得利用indexof很方便,知识还是要活学活用啊!
第一种方法:这种方法很简单,先遍历然利用indexof来判断是否给新创建的数组添加新元素。
function deWeight (arr){
var resultarr=[];
for(var i=0; i<arr.length; i++){
if(resultarr.indexof(arr[i])==-1){
resultarr.push(arr[i])
}
}
console.log(resultarr);
return resultarr;
}
第二种方法:创建一个空的数组存放去重后的数组,创建一个空对象以便于和原数组里边的值去对比,如果没有就添加到新的数组里边和这个对象里边,并赋值为一,如果有就继续下一项。
fucntion deWeight(arr){
var res=[];
var json={};
for (var i=0;i<arr.length;i++){
if (!json[arr[i]]) {
res.push(arr[i]);
json[arr[i]]=1;
}
}
return res
}
第三种方法:传统的遍历数组中的每一个元素,然后两个数组去对比。
function deWeight(arr) {
var res=[]; var tab;
for (var i=0; i<arr.length; i++){
tab=false;
for (var j=0; j<res.length; j++){
if(res[j]==arr[i]){
tab=true;
break;
}
}
if(!tab){
res.push(arr[i]);
}
}
return res;
}