代碼如下:
<script>
function noRepeat(a) {
var arr = a;//定義一個數(shù)組用來接收從外邊傳進來的數(shù)組
var arr2 = [];//定義一個空數(shù)組汽畴,用來放不重復的新的數(shù)組
for(var i=0;i<arr.length;i++){//遍歷數(shù)組
var flag = true;//定義一個開關(guān)沒來決定放不放入新數(shù)組
for (j=0;j<arr2.length;j++){//遍歷新數(shù)組
if(arr[i]===arr2[j]){//如果相等旧巾,就不放了
flag=false;
break;
}
}
if(flag){
arr2.push(arr[i])
}
}
return arr2;
}
var a = [1,2,3,3,4,4,4,5,8,8,8];
var res = noRepeat(a);
console.log(res);
</script>
分析:數(shù)組去重耸序,就是數(shù)組里有重復的元素,要將他去掉鲁猩,類比一個袋子①里有五顏六色的很多顏色相同的球坎怪,要將顏色一樣的去掉,顏色相同的只留一個廓握,那么我們會怎么做呢搅窿?
首先要準備一個空袋子②------創(chuàng)建一個新的空的數(shù)組
然后在袋子①里找球----遍歷第一個數(shù)組里的值
第一個球肯定是要放到新的袋子里的,這個不用考慮
從袋子①里拿到第二個球隙券,就和袋子②里放入的球比較男应,如果相同就不放到新袋子里了,扔出去---break
然后繼續(xù)娱仔,直到把袋子里的球拿完沐飘。
在這里要加一個開關(guān),開關(guān)關(guān)著就不讓放牲迫,開關(guān)開著耐朴,就放到新袋子里。
為什么要加開關(guān)呢盹憎?當我拿到一個筛峭,它必須和袋子②里的每個球都對比一下,也就是新數(shù)組里的值必須遍歷完才可以添加陪每,不然只和袋子②里的第一個比較看見不同影晓,就添加進去,其實里面已經(jīng)有一個相同顏色的檩禾,那不就達不到去重的效果了嗎挂签?解決這個問題的辦法就是要加一個開關(guān)。在袋子②遍歷完成之后锌订,如果開關(guān)開著竹握,才可以加球画株。