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

思路:

  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. OMAPL138制作SD卡启动介质及重装Linux系统

    OMAPL138制作SD卡启动盘及重装Linux系统 手里的创龙的OMAPL138平台的系统SSH坏掉了,我重新移植了openssh还是不好使,没有办法了只能重装OMAPL138的系统了,按照创龙给的 ...

  2. 006---Python基本数据类型--集合

    集合 .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px ...

  3. 分布式系统的CAP(Redis)

    CAP理论就是说在分布式存储系统中,最多只能实现上面的两点.而由于当前的网络硬件肯定会出现延迟丢包等问题,所以 分区容忍性是我们必须需要实现的. 所以我们只能在一致性和可用性之间进行权衡,没有NoSQ ...

  4. BZOJ3265: 志愿者招募加强版(线性规划)

    Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 809  Solved: 417[Submit][Status][Discuss] Descriptio ...

  5. ABAP CDS ON HANA-(1)CDSビュー作成

    Basic CDS View Creation Open HANA Studio. Goto ABAP perspective. Open the project, Navigate to the p ...

  6. python基础之多线程

    概念 进程:进程就是一个程序在一个数据集上的一次动态执行过程 程序:代码 数据集:程序执行过程中需要的资源 进程控制块:完成状态保存的单元 线程:线程是寄托在进程之上,为了提高系统的并发性 线程是进程 ...

  7. LeetCode:15. 3Sum(Medium)

    1. 原题链接 https://leetcode.com/problems/3sum/description/ 2. 题目要求 数组S = nums[n]包含n个整数,请问S中是否存在a,b,c三个整 ...

  8. python QQ邮箱自动发送邮件

    于初学者来讲在写发送邮件代码时常见的错误有SMTPAuthenticationError535,有点懵逼,检查用户名,密码正确就是报错, 想当年笔者也是这么过来的,现在就给大家分享一下个人经验: 一, ...

  9. Elasticsearch中的DocValues

    Elasticsearch最近一段时间非常火,以致于背后的公司都改名为Elastic了,因为Elasticsearch已经不仅限于搜索,反而更多的用在大数据分析场景,所以在公司品牌上开始“去Searc ...

  10. 容器基础(十): 使用kubernetes部署应用

    概述 使用之前的脚本(env/server.py 得到 env/server:v0.1 镜像, env/worker.py 得到 env/worker:v0.1)得到的镜像,在部署好kubernete ...