利用Set对象去重

set是es6新增的数据类型,里面是没有重复数据的,所以直接使用set就能得到一个去重后的数组

let array = [1, 1, 2, 3, 4]
let arr1 = Array.from(new Set(array))
// arr1 = [1, 2, 3, 4]

使用双重for循环,再利用数组的splice方法去重

let array = [1, 1, 2, 3, 4]
for (let i=0; i< array.length; i++) {
  for (let y=i+1; y<array.length; y++) {
    if (array[i] === array[y]) {
      array.splice(y, 1)
      y -= 1
    }
  }
}

利用includes去重(es6新增)

let array = [1, 1, 2, 3, 4]
let arr1 = []
for (let i=0; i<array.length; i++) {
  if (!arr1.includes(array[i])) {
    arr1.push(array[i])
  }
}
// arr1 = [1, 2, 3, 4]

利用filter去重(es6新增)

let array = [1, 1, 2, 3, 4]
let arr1 = array.filter((row, key) => {
  return array.indexOf(row, 0) === key
})

利用Object去重

大家都知道,object的键名是唯一的,把数组每一项的值作为obj的键名,再遍历obj就能得到一个没有重复值的数组,缺点是顺序会乱,因为obj没有顺序

let array = [1, 1, 2, 3, 4]
let obj = {}
for (let i=0; i<array.length; i++) {
 obj[array[i]] = 1
}
let arr1 = []
for (let y in obj) {
 arr1.push(y)
}