JavaScript陣列去重方法

StephenO_o發表於2022-05-09
  1. 雙層迴圈判斷原陣列前後item是否重複
function unique (arr) {
  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)
      }
    }
  }
  return arr
}
  1. ES6 set
function unique (arr) {
  return Array.from(new Set(arr))
}
  1. indexOf 判斷返回新陣列
function unique (arr) {
  let newArr = []
  arr.forEach(item => {
    if (newArr.indexOf(item) < 0) {
      newArr.push(item)
    }
  })
  return newArr
}
  1. filter + indexOf
function unique (arr) {
  return arr.filter((item, index, arr) => {
    // console.log(arr)
    // Array.filter() 的第三個入參,表示原陣列
    return arr.indexOf(item, 0) === index
    // Array.indexOf() 的第二個入參,表示從哪個位置開始,此處沒用到這個第二個引數,只是突然想起來了備註下
  })
}

相關文章