博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js数组去重的三种常用方法总结
阅读量:6148 次
发布时间:2019-06-21

本文共 1366 字,大约阅读时间需要 4 分钟。

第一种是比较常规的方法

思路:

1.构建一个新的数组存放结果

2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比

3.若结果数组中没有该元素,则存到结果数组中

代码如下:

Array.prototype.unique1 = function(){
 var res = [this[0]];
 for(var i = 1; i < this.length; i++){
  var repeat = false;
  for(var j = 0; j < res.length; j++){
   if(this[i] == res[j]){
    repeat = true;
    break;
   }
  }
  if(!repeat){
   res.push(this[i]);
  }
 }
 return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
alert(arr.unique1());
 

2.数组下标判断法

还是得调用“indexOf”性能跟方法1差不多,实现思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉。否则存入结果数组。

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

3.排序后相邻去除法 

虽然原生数组的”sort”方法排序结果不怎么靠谱,但在不注重顺序的去重里该缺点毫无影响。实现思路:给传入数组排序,排序后相同值相邻,然后遍历时新数组只加入不与前一值重复的值。

// 将相同的值相邻,然后遍历去除重复值 
function 
unique4(array){
array.sort();
var 
re=[array[0]];
for
(
var 
i = 1; i < array.length; i++){ 
if
( array[i] !== re[re.length-1]){
  
re.push(array[i]);
 
}
 
}
 
return 
re;
}
 

5.优化遍历数组法

该方法的实现代码相当酷炫,实现思路:获取没重复的最右一值放入新数组。(检测到有重复值时终止当前循环同时进入顶层循环的下一轮判断)推荐

// 思路:获取没重复的最右一值放入新数组
function 
unique5(array){
var 
r = [];
for
(
var 
i = 0, l = array.length; i < l; i++) { 
 
for
(
var 
j = i + 1; j < l; j++)
  
if 
(array[i] === array[j]) j = ++i;
 
r.push(array[i]);
 
}
 
return 
r;
}
 

转载于:https://www.cnblogs.com/792155879a/p/6101025.html

你可能感兴趣的文章
Capistrano 部署rails 应用
查看>>
面试题1-----SVM和LR的异同
查看>>
TCP/IP分层
查看>>
MFC控件的SubclassDlgItem
查看>>
找水王2
查看>>
静态非静态内部类匿名内部类局部内部类
查看>>
如何避免历史回退到登录页面
查看>>
《图解HTTP》1~53Page Web网络基础 HTTP协议 HTTP报文内的HTTP信息
查看>>
unix环境高级编程-高级IO(2)
查看>>
树莓派是如何免疫 Meltdown 和 Spectre 漏洞的
查看>>
雅虎瓦片地图切片问题
查看>>
HTML 邮件链接,超链接发邮件
查看>>
HDU 5524:Subtrees
查看>>
手机端userAgent
查看>>
pip安装Mysql-python报错EnvironmentError: mysql_config not found
查看>>
http协议组成(请求状态码)
查看>>
怎样成为一个高手观后感
查看>>
[转]VC预处理指令与宏定义的妙用
查看>>
JQuery radio单选框应用
查看>>
MySql操作
查看>>