首页 > 语言 > JavaScript > 正文

JS去除数组重复值的五种不同方法

2024-05-06 14:35:57
字体:
来源:转载
供稿:网友

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

Array类型并没有提供去重复的方法,如果要把数组的重复元素干掉,那得自己想办法:

方法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()方法。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选