js 数组去重

Posted https://blog.zlevai.com

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 数组去重相关的知识,希望对你有一定的参考价值。

/*
 * @Author: Mr.live 
 * @Date: 2018-01-23 15:12:45 
 * @Last Modified by: Mr.live
 * @Last Modified time: 2018-01-23 15:40:28
 */
// 数组去重
var arr=[1,2,3,2,33,44,44,2]
// 1)对象存放,哈希算法(映射)判断
function unique(arr) {
  // n为hash表,r为临时数组
  var n = {}, r = [];
  for (var i = 0; i < arr.length; i++) {
      // 如果hash表中没有当前项
      if (!n[arr[i]]) {
          // 存入hash表
          n[arr[i]] = true;
          // 把当前数组的当前项push到临时数组里面
          r.push(arr[i]); 
      }
  }
  return r;
}

// 2) 新语法结构去重
// es5简化版
Array.prototype.unique1 = function() {
  return this.filter((v, i) => this.indexOf(v) === i)
}
// es6简化版
Array.prototype.unique2 = function() {
  return Array.from(new Set(this));
}
//
Array.prototype.unique3 = function() {
  return [...new Set(this)];
}


// 3)使用数组的indexOf()方法可以很简单的达到目的。
var arr2 = [ 1, 2, 1, 2, ‘1‘, ‘11‘];
function unique4(arr) {
  // 创建一个新的临时数组,用于保存输出结果
  var n = []; 
  // 遍历当前数组
  for (var i = 0; i < arr.length; i++) {
      // 如果当前数组的第i个元素已经保存进了临时数组,那么跳过,否则把当前项push到临时数组里面
      if (n.indexOf(arr[i]) == -1) n.push(arr[i]);
  }
  return n;
}

console.log(unique4(arr2))

 

以上是关于js 数组去重的主要内容,如果未能解决你的问题,请参考以下文章

js 二维数组去重(续)

js数组去重的5种算法实现

js数组去重的几种方法

85JS原生:数组4种去重方法

js数组去重的四种方法

js数组去重的四种方法