JavaScript 数组去重方法总结

1.遍历数组法: 这应该是最简单的去重方法(实现思路:新建一新数组,遍历数组,值不在新数组就加入该新数组中)

// 遍历数组去重法
function unique(arr){
 var _arr = []
 //遍历当前数组
 for(var i = 0; i < arr.length; i++){
 //如果当前数组的第i已经保存进了临时数组,那么跳过,
 //否则把当前项push到临时数组里面
 if (_arr.indexOf(arr[i]) == -1) _arr.push(arr[i])
 }
 return _arr
}

注意点:indexOf 为 ES5 的方法,注意浏览器兼容,需要自己实现 indexOf 

2.对象键值对(hash) 法:速度快,高效,占用更大的内存换取更快的时间,用 JavaScript 中的 Object 对象来当做哈希表,hash去重的核心是构建了一个 hash 对象来替代 indexOf

// hash 去重法
function unique(arr){
  var _arr = [], 
  hash = {}
  for (var i = 0; i < arr.length; i++) {
       var item = arr[i]
       var key = typeof(item) + item
       // 对象的键值只能是字符串, typeof(item) + item来去分1和'1'的情况
       if(hash[key] !== 1){
           _arr.push(item)
           hash[key] = 1
      }
   }
    return _arr
}

3.炫酷的 es6 Set数据结构: ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值

function unique(arr){
     return Array.from(new Set(arr))
     // Array.from方法用于将两类对象转为真正的数组:
     // 类似数组的对象(array-like object)和可遍历(iterable)的对象
}

关于 JavaScript 数组去重,还有很多很多,这里介绍了几种常规的,更多的自己去探索!

原文地址:https://www.cnblogs.com/qcxc/p/6933299.html