javaScript 數組去重方法總結(三種)

法一(數組使用splice方法)

<code> var arr=[1,2,3,4,1,2,3,2,1,1,3,7,7,2,1,6,1,2,4,5,1,2,3]; 

//循環遍歷數組
for(var i=0;i<arr.length> //定義變量獲取當前元素
var item=arr[i];
//循環遍歷i之後的元素
for(var j=i+1;j<arr.length> //判斷i之後的元素是否有與當前元素相等的
if(item===arr[j]){
//如果有相等的,刪除此元素
arr.splice(j,1);
//元素刪除之後,數組長度改變,當前下標j元素會被後面的元素覆蓋,為防止遺漏元素,需要下次循環依然從此下標開始,所以需要j--.
j--;
}
}
}
console.log(arr); /<arr.length>/<arr.length>/<code>

法二(將去重結果賦值給新數組)

<code>var arr=[1,2,3,4,1,2,3,2,1,1,3,7,7,2,1,6,1,2,4,5,1,2,3];
var arr1=[];
//循環遍歷原數組
for(var i=0;i<arr.length> //獲取當前元素
var item=arr[i];
//定義布爾類型變量並初始值為真
var bool=true;
//循環遍歷新數組
for(var j=0;j<arr1.length> //如果新數組中已經有此元素,則bool為假並跳出
if(arr1[j]===item){
bool=false;
break;
}
}
//如果最後bool仍然為真,說明新數組中無此元素,執行插入操作

if(bool){
arr1.push(item);
}
}
console.log(arr1); /<arr1.length>/<arr.length>/<code>

法三 (原理與法二類似,但使用indexOf方法更簡化)

<code>var arr=[1,3,1,2,3,5,2,3,4,6];
var arr1=[];
//循環遍歷原數組
for(var i=0;i<arr.length> //在新數組中查找當前元素,如果查詢不到(indexOf返回值為-1),則執行插入操作
if(arr1.indexOf(arr[i])===-1){
arr1.push(arr[i]);
}
}
console.log(arr1); /<arr.length>/<code>
<code>var arr=[1,3,1,2,3,5,2,3,4,6];
var arr1=[];
//循環遍歷原數組
for(var i=0;i<arr.length> //在新數組中查找當前元素,如果查詢不到(indexOf返回值為-1),則執行插入操作
if(arr1.indexOf(arr[i])===-1){
arr1.push(arr[i]);
}
}
console.log(arr1); /<arr.length>/<code>


分享到:


相關文章: