Js中去除数组中重复元素的4种方法

今天工作遇到此问题,尝试多个方法不尽人意,故此写个博客来总结一下如何在js中去除重复元素。

方法1:

        Array.prototype.method1 = function(){
            var arr[];    //定义一个临时数组
            for(var i = 0; i < this.length; i++){    //循环遍历当前数组
                //判断当前数组下标为i的元素是否已经保存到临时数组
                //如果已保存,则跳过,否则将此元素保存到临时数组中
                if(arr1.indexOf(this[i]) == -1){
                    arr.push(this[i]);
                }
            }
            return arr;
        }

方法2:

        
        Array.prototype.method2 = function(){
            var h{};    //定义一个hash表
            var arr[];  //定义一个临时数组
            
            for(var i = 0; i < this.length; i++){    //循环遍历当前数组
                //对元素进行判断,看是否已经存在表中,如果存在则跳过,否则存入临时数组
                if(!h[this[i]]){
                    //存入hash表
                    h[this[i]] = true;
                    //把当前数组元素存入到临时数组中
                    arr.push(this[i]);
                }
            }
            return arr;
        }

方法3:

        Array.prototype.method3 = function(){
            //直接定义结果数组
            var arr[this[0]];
            for(var i = 1; i < this.length; i++){    //从数组第二项开始循环遍历此数组
                //对元素进行判断:
                //如果数组当前元素在此数组中第一次出现的位置不是i
                //那么我们可以判断第i项元素是重复的,否则直接存入结果数组
                if(this.indexOf(this[i]) == i){
                    arr.push(this[i]);
                }
            }
            return arr;
        
        }

方法4:

        Array.prototype.method4 = function(){
            //将数组进行排序
            this.sort();
            //定义结果数组
            var arr[this[0]];
            for(var i = 1; i < this.length; i++){    //从数组第二项开始循环遍历数组
                //判断相邻两个元素是否相等,如果相等说明数据重复,否则将元素写入结果数组
                if(this[i] !== arr[arr.length - 1]){
                    arr.push(this[i]);
                }            
            }
            return arr;
            
        }

例如:

        var arr = [112,112,34,‘你好‘,112,112,34,‘你好‘,‘str‘,‘str1‘];
        alert(arr.method3());

方法1和方法3都用到了数组的indexOf()方法,此方法主要用来查找元素在数组中第一次出现的位置。比较浪费资源和时间。

方法2使用的是hash表,把已经出现过的元素通过下标形式写入到一个object内,下标的引用要比用数组indexOf()方法搜索节省时间。

方法4是先将数组排序,然后一次比较相邻的两个元素的值,排序使用的是js原生的sort()方法。

读者可以自行编写程序测试四种方法的效率如何。例如:首先利用随机函数生成一个50000长度的随机数数组,然后分别用四种方法进行执行,记录程序运行时间进行比较四种方法的优劣。

时间: 2024-12-21 00:05:11

Js中去除数组中重复元素的4种方法的相关文章

python中List添加、删除元素的几种方法

一.python中List添加元素的几种方法 List 是 Python 中常用的数据类型,它一个有序集合,即其中的元素始终保持着初始时的定义的顺序(除非你对它们进行排序或其他修改操作).在Python中,向List添加元素,方法有如下4种方法(append(),extend(),insert(), +加号). 1. append() 追加单个元素到List的尾部,只接受一个参数,参数可以是任何数据类型,被追加的元素在List中保持着原结构类型.此元素如果是一个list,那么这个list将作为一

oracle中查找和删除重复记录的几种方法总结

平时工作中可能会遇到当试图对库表中的某一列或几列创建唯一索引时,系统提示 ORA-01452 :不能创建唯一索引,发现重复记录. 下面总结一下几种查找和删除重复记录的方法(以表CZ为例): 表CZ的结构如下: 1 SQL> desc cz 2 Name Null? Type 3 ------------------------------------------------------------------- 4 C1 NUMBER(10) 5 C10 NUMBER(5) 6 C20 VARC

Js中去除数组中重复元素的几种方法

方法1: 1 Array.prototype.method1=function(){ 2 var arr=[]; 3 for(var i=0;i<this.length;i++){ 4 if(arr.indexOf(this[i]) == -1){ 5 arr.push(this[i]); 6 } 7 } 8 return arr; 9 } 方法2: 1 Array.prototype.method2 = function(){ 2 var h{}; //定义一个hash表 3 var arr[

javascript中去除数组中的重复元素

1 <script type="text/javascript"> 2 var arr = ["b" ,"a" , "a", 2, 3, 3, 2, 1, 4, {}]; 3 Array.prototype.unique = function(){ 4 var ret = []; 5 var o = {};//这个对象在这里其实是起一个临时容器的作用,在下面的操作中,每次从数组取一个元素,然后判断以这个元素为属性名

js 巧妙去除数组中的重复项

1.代码如下: var toObject = function(a) { var o = {}; for (var i=0, j=a.length; i<j; i=i+1) { // 这里我调整了下, YUI源码中是i<a.length o[a[i]] = true; } return o; } var keys = function(o) { var a=[], i; for (i in o) { if (o.hasOwnProperty(i)) { // 这里, YUI源码中是lang.h

去除数组的重复元素

1.遍历数组法 思路:新建一个新数组,遍历传入数组值不在新数组就加入该新数组 注意:判断值是否在数组的方法indexOf是ECMAScript5的方法,IE8以下不支持,需要写兼容 function unique1(array){ var n = [] for(var i = 0;i < array.length;i++){ if(n.indexOf(array[i]) == -1){ n.push(array[i]) } } return n; } //IE8以下兼容 //判断浏览器是否支持i

Java之——删除ArrayList中的重复元素的2种方法

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47414935 ArrayList是Java中最常用的集合类型之一.它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序.在编码时我们经常会遇 到那种必须从已建成的ArrayList中删除重复元素的要求.这篇文章将给出两种从ArrayList中删除重复元素的方法. 方法1:使用HashSet删除ArrayList中重复的元素 在该方法中,我们使用HashSet来删除重复

javascript获取数组最后一个元素(三种方法)

JavaScript 获取Array末尾元素 一.JavaScript pop() 方法 pop() 方法用于删除并返回数组的最后一个元素. 注意:pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值.如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值. var arr = new Array("js","JavaScript","jQuery"); var end

JS中去除数组中的假值(0, 空,undefined, null, false)

1.Array.filter() arr.filter(Boolean) 2.也可以通过遍历判断数组, 空字符,undefined, null, false , 0转化为布尔类型都是 false; let arr=[1, , null, false, undefined, 3]let newArr= []//法1arr.forEach(item => { if (item) { newArr.push(item) }})//法2for (let item of arr) { if (item)