数组去重复是一个常见的需求,我们暂时考虑同类型的数组去重复。主要是理清思路和考虑下性能。以下方法,网上基本都有,这里只是简单地总结一下。

思路:

  1. 遍历数组,一一比较,比较到相同的就删除后面的
  2. 遍历数组,一一比较,比较到相同的,跳过前面重复的,不相同的放入新数组
  3. 任取一个数组元素放入新数组,遍历剩下的数组元素任取一个,与新数组的元素一一比较,如果有不同的,放入新数组。
  4. 遍历数组,取一个元素,作为对象的属性,判断属性是否存在

1. 删除后面重复的:

1 function ov1(arr){
2     //var a1=((new Date).getTime())
3     for(var i=0;i<arr.length;i++)
4         for(var j=i+1;j<arr.length;j++)
5             if(arr[i]===arr[j]){arr.splice(j,1);j--;}           
6     //console.info((new Date).getTime()-a1)               
7     return arr.sort(function(a,b){return a-b});
8 }

2. 这个是常规的方法,比较好理解,如果相同则跳出循环

01 function ov2(a) {
02     //var a1=((new Date).getTime())
03     var b = [], n = a.length, i, j;
04     for (i = 0; i < n; i++) {
05         for (j = i + 1; j < n; j++)
06             if (a[i] === a[j]){j=false;break;}
07         if(j)b.push(a[i]);
08         }
09     //console.info((new Date).getTime()-a1)   
10     return b.sort(function(a,b){return a-b});
11 }

3. 这个我花了好长时间明白的,这里j循环虽然继续了,但是i值已经改变了。就等于是一个新的i循环:

01 function ov3(a) {
02     //var a1=((new Date).getTime())
03     var b = [], n = a.length, i, j;
04     for (i = 0; i < n; i++) {
05         for (j = i + 1; j < n; j++)
06         if (a[i] === a[j])j=++i
07     b.push(a[i]);}
08     //console.info((new Date).getTime()-a1)   
09     return b.sort(function(a,b){return a-b});
10 }    

4. 保证新数组中的都是唯一的

01 function ov4(ar){
02 //var a1=((new Date).getTime())
03     var m=[],f;
04     for(var i=0;i<ar.length;i++){
05     f=true;
06     for(var j=0;j<m.length;j++)
07     if(ar[i]===m[j]){f=false;break;};
08     if(f)m.push(ar[i])}
09 //console.info((new Date).getTime()-a1)   
10     return m.sort(function(a,b){return a-b});
11 }

5. 用对象属性

1 function ov5(ar){
2 //    var a1=(new Date).getTime()
3         var m,n=[],o= {};
4         for (var i=0;(m= ar[i])!==undefined;i++)
5         if (!o[m]){n.push(m);o[m]=true;}
6 //    console.info((new Date).getTime()-a1)   
7     return n.sort(function(a,b){return a-b});;
8     }

JavaScript几种数组去掉重复值的方法的更多相关文章

  1. PHP 二维数组去掉重复值并保持原结构

    PHP 二维数组去掉重复值并保持原结构 直接上代码,解释很详细 //二维数组去掉重复值 function arrunique($a){ foreach($a[0] as $k => $v){ / ...

  2. 字符串数组(String []) 去掉重复值的方法

    public class Demo { /** * 去掉重复值 */ public static void main(String[] args) { String test = "100, ...

  3. JS去除数组中重复值的四种方法

    JS去除数组中重复值的四种方法 1 /// <summary>            o[this[i]] = "";  }      }       newArr.p ...

  4. PHP如何去掉多维数组的重复值

    1.定义函数 function array_unique_new($arr){ $t = array_map('serialize', $arr);//利用serialize()方法将数组转换为以字符 ...

  5. JS数组去掉重复元素

    JS数组去掉重复元素,这里提供3中写法. var arr =[1,2,3,4,5,6,3,4,7,2,4,1,8]; 输出:[1,2,3,4,5,6,7,8]; 1.使用indexOf() arr.i ...

  6. js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法

    var  questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf ...

  7. php 检查该数组有重复值

    if (count($array) != count(array_unique($array))) { echo '该数组有重复值'; }

  8. JavaScript移除数组元素减少长度的方法

    JavaScript移除数组元素减少长度的方法,代码如下: //数组移除长度方法 var array=[];  array[0]="张三";  array[1]="李四& ...

  9. php 获取数组第一个值的方法分享

    以下是对使用php实现获取数组第一个值的方法进行了详细的分析介绍,需要的朋友可以过来参考下 reset (PHP 3, PHP 4, PHP 5)reset -- 将数组的内部指针指向第一个单元 说明 ...

随机推荐

  1. 一个 mr 作业跑的比较慢,如何来优化。

    mr跑的慢可能有很多原因,如:数据倾斜.map和reduce数设置不合理.reduce等待过久.小文件过多.spill 次数过多. merge 次数过多等. 1.解决数据倾斜:数据倾斜可能是parti ...

  2. elasticsearch搜索引擎搭建

    在该路径下,运行elasticsearch.bat该命令,后面访问127.0.0.1:9200 出现如下界面说明启动成功 elasticsearch-head操作elasticsearch的图形界面, ...

  3. Vue简单使用,

    一些零碎的知识点: 在js中变量的声明 有三种方式: let,var, const let: 对应的是一个块级作用域 { let a = 12 } console.log(a) 这是未声明的, var ...

  4. 3 web服务器:静态文件

    1.处理客户端请求数据 >>> s = "GET / HTTP/1.1\r\nHost: 127.0.0.1:8080\r\nConnection: keep-alive& ...

  5. 3 python3 编码解码问题 upd接受数据

    1.python3下的中文乱码:send_data.encode("utf-8") from socket import * udp_socket = socket(AF_INET ...

  6. ASP NET Core ---POST, PUT, PATCH, DELETE,Model 验证

    参照 草根专栏- ASP.NET Core + Ng6 实战:https://v.qq.com/x/page/u0765jbwc6f.html 一.POST 安全性和幂等性 安全性是指方法执行后并不会 ...

  7. centos7源码安装cloud-init

    <template> <name>centos72-source</name> <os> <name>CentOS-7</name&g ...

  8. 关键词提取TF-IDF算法/关键字提取之TF-IDF算法

    TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与信息探勘的常用加权技术.TF的意思是词频(Term - frequency),  ...

  9. 参加2018之江杯全球人工智能大赛 :视频识别&问答(四)

    很遗憾没有在规定的时间点(2018-9-25 12:00:00)完成所有的功能并上传数据,只做到写了模型代码并只跑了一轮迭代,现将代码部分贴出. import keras from keras.lay ...

  10. Drools 7.4.1.Final参考手册(八) 规则语言参考

    规则语言参考 概述 Drools有一个“本地”的规则语言.这种格式在标点符号上非常轻,并且通过“扩展器”支持自然语言和领域特定的语言,使语言能够变形到您的问题领域.本章主要与本机规则格式一致.用于表示 ...