JS数组去重

数组去重

1.用indexof

let arr = [1, 2, 3, 1, 2, 1, 2, 3, 2, 1, 2, 3];

// 用indexof
let newArr = []
for(let i = 0; i < arr.length;i++) {
  if(newArr.indexOf(arr[i]) === -1) 
    newArr[i] = arr[i]
}
console.log(newArr)

2.用set

let newArr = [...new Set(arr)]

3.好点的方法

function unique(arr) {
  let obj = {}
  let i = 0
  while (i < arr.length) {
    if (obj[arr[i]]) {
      arr[i] = arr[arr.length - 1]
      arr.length--
      continue
    }
    obj[arr[i]] = true
    i++
  }
}
  • 利用一个对象来判断值是否已经存在
  • 存在的话用数组最后一项提前到当前已存在的值,然后数组length--相当于删除了一个值
  • 不存在的话 用当前值当obj的key且值设为true 并且判断下一个
posted @ 2020-09-10 07:20  fcslow  阅读(109)  评论(0)    收藏  举报