js 数组去重的几个方法

 1 Array.prototype.unique1 = function () {
 2   var n = []; //一个新的临时数组
 3   for (var i = 0; i < this.length; i++) //遍历当前数组
 4   {
 5     //如果当前数组的第i已经保存进了临时数组,那么跳过,
 6     //否则把当前项push到临时数组里面
 7     if (n.indexOf(this[i]) == -1) n.push(this[i]);
 8   }
 9   return n;
10 };
11
12
13 Array.prototype.unique2 = function()
14 {
15     var n = {},r=[]; //n为hash表,r为临时数组
16     for(var i = 0; i < this.length; i++) //遍历当前数组
17     {
18         if (!n[this[i]]) //如果hash表中没有当前项
19         {
20             n[this[i]] = true; //存入hash表
21             r.push(this[i]); //把当前数组的当前项push到临时数组里面
22         }
23     }
24     return r;
25 };
26
27
28 Array.prototype.unique3 = function()
29 {
30     var n = [this[0]]; //结果数组
31     for(var i = 1; i < this.length; i++) //从第二项开始遍历
32     {
33         //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
34         //那么表示第i项是重复的,忽略掉。否则存入结果数组
35         if (this.indexOf(this[i]) == i) n.push(this[i]);
36     }
37     return n;
38 };
39
40
41 Array.prototype.unique4 = function()
42 {
43     this.sort();
44     var re=[this[0]];
45     for(var i = 1; i < this.length; i++)
46     {
47         if( this[i] !== re[re.length-1])
48         {
49             re.push(this[i]);
50         }
51     }
52     return re;
53 };
54
55
56 var arr = [1,2,2,2,3,3,4,5];
57 console.log(arr.unique1()); // [1, 2, 3, 4, 5]
58 console.log(arr.unique2()); // [1, 2, 3, 4, 5]
59 console.log(arr.unique3()); // [1, 2, 3, 4, 5]
60 console.log(arr.unique4()); // [1, 2, 3, 4, 5]
时间: 2024-10-18 12:53:44

js 数组去重的几个方法的相关文章

js数组去重的4种方法

js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototype.indexOf = Array.prototype.indexOf || function(item) { for (var i = 0, j = this.length; i < j; i++) { if (this[i] === item) { return i; } } return -1; } Ar

js数组去重的三个方法

在工作上,对json数据处理时,例如遇到对某些产品的尺码进行排序,不同的产品都有相同的尺码那是正常不过的事情,如果我们要把这些转成表格的形式来展现,那么这些尺码就不要不能重复才行.在这里呢,我就写几个数组去重的方法,给大家参考参考: 方法一:对数组进行先排序,排完序之后在让元素与前一个元素做对比,相同的就去掉 说明:该方法用到的是sort()方法和slice(),下面我直接贴代码上来,里面有注释说明,相信大家肯定是看得懂的 var arr = ['a', 'b', 'c', 'd', 'e',

原生JS数组去重的几种方法

有时候我们做项目的时候往往会需要把数组里面一些重复的项去掉,但是原生JS有排序,有筛选等等,但是就是没有数组去重怎么办呢?这能怎么办,自己手动实现嘛.(以下代码直接在原型上添加的的方法,为的就是和原生JS方法类似)可以达到Array.xxx()这样的效果 第一种方法:创建空数组利用indexOf方法检测就数组的项是否在新数组中. Array.prototype.unique=function(){ var arr=[];//创建新数组 for(var i=0;i<this.length;i++)

js数组去重的三种常用方法

第一种是比较常规的方法 思路: 1.构建一个新的数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比 3.若结果数组中没有该元素,则存到结果数组中 代码如下: Array.prototype.unique1 = function(){ var res = [this[0]]; for(var i = 1; i < this.length; i++){  var repeat = false;  for(var j = 0; j < res.length; j+

js数组去重的三种常用方法总结

第一种是比较常规的方法 思路: 1.构建一个新的数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比 3.若结果数组中没有该元素,则存到结果数组中 复制代码 代码如下: 1 Array.prototype.unique1 = function(){ 2 var res = [this[0]]; 3 for(var i = 1; i < this.length; i++){ 4 var repeat = false; 5 for(var j = 0; j < r

js数组去重的两种方法

数组去重这种问题经常会遇到,解决方法也有很多,这里就总结两种比较常用的方法. 方法一 第一种方法的思路:遍历数组里的元素,由第一个元素开始依次按照顺序与其后面的元素相比较,如果不同则不用管,相同则把其后所被比较的元素去除.这样所有元素循环一遍,数组中重复的元素就能全部去除. 代码: <script> var arr = [1, 5, 7, 6, 3, 2, 5, 4, 6, 9, 5, 1, 2, 3, 5, 4, 8, 9, 5, 4, 5, 0];     for (var i = 0;

JS数组去重的三种方法

<!DOCTYPE html> <html>     <head>         <meta charset="UTF-8">         <title>数组去重</title>     </head>     <body>         <script type="text/javascript">             //注意有一个元素是空的

js数组去重的4个方法

面试前端必须准备的一个问题:怎样去掉Javascript的Array的重复项.据我所知,百度.腾讯.盛大等都在面试里出过这个题目. 这个问题看起来简单,但是其实暗藏杀机. 考的不仅仅是实现这个功能,更能看出你对计算机程序执行的深入理解. 我总共想出了三种算法来实现这个目的: 1. Array.prototype.unique1 = function() { var n = []; //一个新的临时数组 for(var i = 0; i < this.length; i++) //遍历当前数组 {

js数组去重的几种方法

三种方法 利用indexOf判断新数组 underscore.js中实际上也是使用的类似的indexOf //传入数组 function unique1(arr){ var tmpArr = []; for(var i=0; i<arr.length; i++){ //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if(tmpArr.indexOf(arr[i]) == -1){ tmpArr.push(arr[i]); } } return tmp

js数组去重的四种方法

//第一种方法 Array.prototype.removeDuplicate = function() { var n = []; for (var i = 0; i < this.length; i++) { if (n.indexOf(this[i]) == -1) { n.push(this[i]); } } return n; } var arr = [1, 2, 3, 3, 2, '我', '我', 34, '我', NaN, NaN]; var m1 = arr.removeDup