let arr=[1,2,2,3,1,4,4,8,8,8,8,5,5,6,6,7,7,8] //第一次遍歷數組 for(var i=0;i<arr.length;i++){ //第二次遍歷數組,是第一遍歷數組下標的下一個數據 for(var j=i+1;j<arr.length;j++){ //判斷第一層遍歷數據和第二層遍歷的數據是否相同 if(arr[i]==arr[j]){ //如果數據相同則通過splice刪除一條相同的數據 arr.splice(i,1) //i是第一層遍歷的下標,因為上一步刪除了一條數據,所以下標也需要減一,否則實際下標,要比數組中的數據更多 i--; //j 也同樣需要和i一樣減一,保持遍歷依舊同步判斷 j--; } } //去重完成以后,數組數據在控制台輸出 console.log(arr)
第一個for循環是拿出一條數據,和第二個for循環中的所有數據,進行對比。
但是為了防止下標相同的數據進行對比,所以第二個for循環要在第一個for循環數據下標的基礎上加一,這樣對比的數據就不會出現相同下標的數據。