首页 > 技术文章 > 数组去重

woniubushinide 2019-07-23 16:08 原文

一、利用对象键唯一的特性(也是性能比较高的方法)

    let arr = [1, 2, 3, 4, 8, 10, 4, 8, 12]
    function uniq(arr) {
      let obj = {}
      let res = []
      for (let i of arr) {
        if (!obj[i]) {
          res.push(i)
          obj[i] = 1
        }

      }
      return res
    }
    console.log(uniq(arr)) //[1, 2, 3, 4, 8, 10, 12]

二、es6的new Set()

let arr = [1,2,3,4,8,10,4,8,12]
let newarr = [...new Set(arr)]
console.log(888,newarr) //[1, 2, 3, 4, 8, 10, 12]

三、filter()(性能最低)

let arr = [1,2,3,4,8,10,4,8,12]
let newarr = arr.filter((v,index) => arr.indexOf(v) === index)
console.log(888,newarr) //[1, 2, 3, 4, 8, 10, 12]

ps:这3种是比较常见并且写起来比较简洁的,还有很多方法,比如双循环、sort等,个人觉得又绕写的又多,性能也不高,就不做介绍了。

推荐阅读