数组去重

我也是最近复习 上代码把

第一种方法: 循环遍历每一个对象 通过indexOf判断新数组有没有这个值,没有就加入 然后返回这个心数组

let arr = [1, 3, 4, 5, 6, 7, 1, 2, 3, 4, 3, 2, 2, 3, 1]
      let newArr = []
      arr.forEach((item, i) => {
        if(newArr.indexOf(item) === -1) {
          newArr.push(item)
        }
        return newArr
      })
这里也可以延伸出includes()
let arr = [1, 3, 4, 5, 6, 7, 1, 2, 3, 4, 3, 2, 2, 3, 1,2]
      let newArr = []
      arr.forEach(item => {
        if(!newArr.includes(item)) {
          newArr.push(item)
        }
      })
 

第二种方法: 不新建数组 在原数组上进行操作,因为这个里边会有数组塌陷问题,所以在第二层循环J--


      for (var i = 0; i < arr.length; i++) {
        for (var j = i + 1; j < arr.length ; j++) {
          if(arr[i] == arr[j]) {
            arr.splice(j, 1)
            j--
          }
        }
      }
在性能上可以将 变量 = arr,length 这样循环的时候更好

第三种方法:利用对象

let arr = [1, 3, 4, 5, 6, 7, 1, 2, 3, 4, 3, 2, 2, 3, 1,2]
      let obj = {},
          newArr = []
      for (let i = 0, num = arr.length; i < num; i++) {
        if(!obj[arr[i]]) {
          obj[arr[i]] = 'asd'
          newArr.push(arr[i])
        }
      }
Array.prototype.unique = function() {
        let temp = {},
            arr = [],
            len = this.length
        for (var i = 0; i < len; i++) {
          if(!temp[this[i]]) {
            temp[this[i]] = this[i]
            arr.push(this[i])
          }
        }
        return arr
      }
原文地址:https://www.cnblogs.com/doumian/p/12616852.html