陣列的去重
阿新 • • 發佈:2022-04-03
indexOf() lastIndexOf() 實現陣列去重
// indexOf() lastIndexOf() 實現陣列去重 let arr = [1, 2, 3, 1, 2, 3, 4, 5, 1, 1, 1, 1]; for(let i = 0; i < arr.length; i++){ // i 作為陣列的索引值 // console.log(arr[i]); // 判斷是否存在重複的值 // 第一次出現位置的索引值和最後一次出現位置的索引值不相等 if(arr.indexOf(arr[i]) != arr.lastIndexOf(arr[i])){ // 出現多次,可以刪除一個元素,對原陣列進行改變 arr.splice(i,1); // console.log('長度',arr.length); // 每次刪除後,陣列的長度發生改變,但是i++始終執行;導致迴圈提前結束;因此需要長度和索引值保持一致 i--; } // console.log('索引值',i); } console.log(arr); //[ 2, 3, 4, 5, 1 ]
藉助空陣列實現去重
let arr = [1, 2, 3, 1, 2, 3, 4, 5, 1, 1, 1, 1];
let newArr=[];
for(let i = 0;i < arr.length;i++){
// 在新陣列中檢索原陣列中的每個值 不存在則為-1
if(newArr.indexOf(arr[i]) == -1){
// 不存在則新增
newArr.push(arr[i]);
}
}
console.log(newArr);//[ 1, 2, 3, 4, 5 ]
通過兩次迴圈實現陣列去重
// 兩次迴圈實現陣列去重 let arr = [1, 2, 3, 1, 2, 3, 4, 5, 1, 1, 1, 1]; for(let i = 0; i < arr.length; i++){ for(let j = i + 1; j < arr.length; j++){ if(arr[i] == arr[j]){ // 如果相等,則證明重複了 刪除 arr.splice(j, 1); j--; } } } console.log(arr); //[ 1, 2, 3, 4, 5 ]
倒敘遍歷陣列進行去重
// 倒敘遍歷陣列進行去重 可以不用考慮資料刪除後下標改變造成的影響
let arr = [1, 2, 3, 1, 2, 3, 4, 5, 1, 1, 1, 1];
for(let i = arr.length - 1; i >= 0; i--){
for(let j = i - 1; j >= 0; j--){
if(arr[i] == arr[j]){
arr.splice(j, 1)
}
}
}
console.log(arr); //[ 2, 3, 4, 5, 1 ]
通過ES6 set()實現陣列去重
let arr = [1, 2, 3, 1, 2, 3, 4, 5, 1, 1, 1, 1];
let res = [...new Set(arr)];
console.log(res);//[ 1, 2, 3, 4, 5 ]