js實現數組去重的幾種方法


數組去重的方法

1. for循環

2. for循環 + indexOf / includes

let arr = [1, 2, 1, 3, 2, 4, 3, 5, 4]

let newArr = []
for (let i = 0, l = arr.length; i < l; i++) {
  if (newArr.indexOf(arr[i]) === -1) {
    newArr.push(arr[i])
  }
}

console.log(newArr)

3. forEach + includes / indexOf

let arr = [1, 2, 1, 3, 2, 4, 3, 5, 4]

let newArr = []
arr.forEach(item => {
  if (!newArr.includes(item)) newArr.push(item)
})

console.log(newArr)

4. 基於對象處理

let arr = [1, 2, 1, 3, 2, 4, 3, 5, 4]
let obj = {}
for (let i = 0; i < arr.length; i++) {
  let item = arr[i]
  // 如果對象中已經有該元素, 說明該元素是重復元素
  if (obj[item] !== undefined) {
    // 就把數組最后一位放在該位置, 相當於刪掉了該元素
    arr[i] = arr[arr.length - 1]
    // 數組長度減1, 將最后一個元素去掉
    arr.length--
    // i減一, 保證下次循環從替換的元素開始
    i--
    continue
  }
  obj[item] = item
}

console.log(arr)

5. 通過Set和拓展運算符 ...

let arr = [1, 2, 1, 3, 2, 4, 3, 5, 4]
let newArr = [...new Set(arr)]
console.log(newArr)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM