数组去重

60 阅读1分钟

1、es6 new Set

var arr = [1, 2, 2, 9, 3, 4, 2, 3, 4, 6, 7]
console.log(Array.from(new Set(arr)))
console.log([...new Set(arr)])

2、indexOf

var arr = [1, 2, 2, 9, 3, 4, 2, 3, 4, 6, 7]
var result = []
arr.forEach(i => {
    if (result.indexOf(i) == -1) {
        result.push(i)
    }
})

3、filter + indexOf

var arr = [1, 2, 2, 9, 3, 4, 2, 3, 4, 6, 7]

arr = arr.filter((item, index) => {
    return arr.indexOf(item) === index
})

4、reduce + includes

  var arr = [1, 2, 2, 9, 3, 4, 2, 3, 4, 6, 7]
  arr = arr.reduce((pre, item) => {
      return pre.includes(item) ? pre : [...pre, item]
  }, [])    

5、利用对象的key唯一去做

  var arr = [1, 2, 2, 9, 3, 4, 2, 3, 4, 6, 7]
  var obj = {}
  arr.forEach(i => {
      obj[i] = 'sss'
  })
  console.log(Object.keys(obj).map(i => Number(i)))      

6、排序 然后循环去判断

var arr = [1, 2, 2, 9, 3, 4, 2, 3, 4, 6, 7]
temp = arr.sort(),
    result = []
for (let i = 0;i < temp.length;i++) {
    if (temp[i] !== temp[i + 1]) {
        result.push(temp[i])
    }
}

注意:以上所有用indexOf去判断的都可以用includesOf去代替