javascript中数组去重复方式汇总

JavaScript中关于数组去重复的方式很多,下面汇总了常见的几种实现方式。

 1 /*实现一:基于原型扩展*/
 2 Array.prototype.removeDuplicate = function() {
 3     var arrObj = {},
 4         newArr = [],
 5         len = this.length;
 6     for(var i = 0; i < len; i++) {
 7         var value = this[i],
 8             type = (typeof value) + value;
 9         if(arrObj[type] === undefined) {
10             newArr.push(value);
11             arrObj[type] = len;
12         }
13     }
14     return newArr;
15 }
16
17 var s = [1, 1, 2, 3, 4, 5, 4, 3, 4, 4, 5, 5, 6, 7];
18 s.removeDuplicate(); //[1, 2, 3, 4, 5, 6, 7]
19
20 /*实现二:去除重复后数组为字符串*/
21 var removeDuplicate = function(array) {
22     array = array || [];
23     var arrObj = {},
24         len = array.length;
25     for(var i = 0; i < len; i++) {
26         var data = array[i];
27         if(typeof(arrObj[data]) === ‘undefined‘) {
28             arrObj[data] = 1;
29         }
30     }
31     array.length = 0;
32     for(var arr in arrObj) {
33         array[array.length] = arr;
34     }
35     return array;
36 }
37
38 var s = [1, 1, 2, 3, 4, 5, 4, 3, 4, 4, 5, 5, 6, 7];
39 removeDuplicate(s); //["1", "2", "3", "4", "5", "6", "7"]
40
41 /*实现三:去除重复后数组为数字*/
42 var removeDuplicate = function(array) {
43     var str = [];
44     for(var i = 0, len = array.length; i < len; i++) {
45         !RegExp(array[i], ‘g‘).test(str.join(‘,‘)) && (str.push(array[i]));
46     }
47     return str;
48 }
49
50 var s = [1, 1, 2, 3, 4, 5, 4, 3, 4, 4, 5, 5, 6, 7];
51 removeDuplicate(s); //[1, 2, 3, 4, 5, 6, 7]
52
53 /*实现四:hashtable的结构记录已有的元素,这样就可以避免内层循环*/
54 var removeDuplicate = function(array) {
55     var hash = {},
56         newArr = [];
57     for(var i = 0, elem; (elem = array[i]) != null; i++) {
58         if(!hash[elem]) {
59             newArr.push(elem);
60             hash[elem] = true;
61         }
62     }
63     return newArr;
64 }
65
66 var s = [1, 1, 2, 3, 4, 5, 4, 3, 4, 4, 5, 5, 6, 7];
67 removeDuplicate(s); //[1, 2, 3, 4, 5, 6, 7]

上面四种实现方式中,都实现了数组去重复的需求,但在实现方式和性能上面存在一定的差异,其中实现四的方式效率最高。

时间: 2024-10-28 21:54:21

javascript中数组去重复方式汇总的相关文章

JavaScript中数组去除重复

方式一:常规模式 1.构建一个新的临时数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与临时数组对比 3.若临时数组中没有该元素,则存到临时数组中 方式二:使用了默认Js数组sort默认排序,是按ASCII进行排序: 若要按照升降序的排列如下:<控制台打印输出> 1.先将当前数组进行排序 2.检查当前中的第i个元素 与 临时数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置 3.如果不相同,则将该元素存入结果数组中 方式三:<推荐>利用js

javascript中数组循环的方式

forEach循环:        arr1.forEach(function(value,i)//value 值 i 下标            {console.log([value,i])});for in 循环:         for(var k in arr1){                arr2[k]=arr1[k]*10;//k为下标            } map方法:        //循环数组 创建新数组 全部        var arr3=arr1.map(fu

私人定制javascript中数组小知识点(Only For Me)

先上笑话,1.刚看到一个游泳的,想起公司组织去三亚旅游,老板跳海里,各种挣扎,捞上来老板第一句话:我记得我会游泳的啊. 2.媳妇说:老公对不起,我把你新买的自行车撞散架了! 老公:没事宝贝,你若安好,便是晴天! 媳妇说:老公你太有诗意了. 老公:滚犊子,安不好我整死你! 数组的概念 javascript数组是值得有序集合,不过它实属一个javascript对象的特殊形式,这是一个很重点的定性. 创建数组 1.var a=new Array();//等同于[] 2.var a=new Array(

浅谈JavaScript中数组操作常用方法

JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2)获取对象的类型,比较是否为object类型(此方法只能检测是否为Object,不推荐) if(typeof(value)=="Object") { //对数组执行某些操作 } 3)检测对象是否为数组,使用Array.isArray()方法(只支持ie9+,firefox 4+,safar

javascript中数组的应用总结

最近在总结javascript的相关应用,今天对js中的数组部分进行归纳总结,以便在以后的工作中有所参考. 1.在js中数组的定义方式有两种: var a = [1,2,3,4]; var b = new Array(1,2,3,4); 这两种创建数组的方式并无区别,可根据习惯自行选用. 2.通过命令对数组的长度进行修改: 例如:var a = [1,2,3,4,5]; alert(a); 当执行:a.length = 3;      alert(a); 当我们对数组的长度进行定义时,数组会根据

JavaScript中数组Array.sort()排序方法详解

JavaScript中数组的sort()方法主要用于对数组的元素进行排序.其中,sort()方法有一个可选参数.但是,此参数必须是函数. 数组在调用sort()方法时,如果没有传参将按字母顺序(字符编码顺序)对数组中的元素进行排序,如果想按照其他标准进行排序,就需要进行传一个参数且为函数,该函数要比较两个值,并且会返回一个用于说明这两个值的相对顺序的数字. 1.对数字数组进行由小到大的顺序进行排序. 代码: var arr = [22,12,3,43,56,47,4]; arr.sort();

Java中数组的初始化方式

Java中数组的初始化方式    初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组元素分配初始值

javascript中数组常用方法总结

原文:javascript中数组常用方法总结 在javascript的基础编程中,数组是我们最常遇到的,那么数组的一些常用方法也是我们必须要掌握的,下面我们总结一下数组中常用的方法. toString()和valueOf()方法 toString()方法,就是将数组拼接成字符串返回,默认情况下以逗号分隔.valueOf返回数组本身. 1 var a=["a3","bs","c1","d邓"]; 2 var c=a.toStri

JavaScript中数组高级编程实践

今天我们来全面介绍 JavaScript 中 数组的高级使用,与EcmaScript5 Array API 实战. 利用这些新的API 和 技巧,将提高你的开发效率 和 代码的水平. 理解这些原生的API是 非常有必要的,假以时日,我们也可以写出 underscore ...这样的工具库来. Come on Baby! 先看一下 Array.prototype 的全家福. 在JavaScript 中,数组就是有顺序的存储一系列值,长度动态扩容. ,先看我们的EcmaScript 规范中的  对