hi,我是平泽,有问题欢迎留言交流~
这里找到3种数组去重的方法,分享出来,方便他人,注释是我自己的理解
1 function arr1() { 2 var n = []; 3 for(var i=0; i<this.length; i++) { 4 if (n.indexOf(this[i]) == -1) n.push(this[i]); 5 } 6 return n; 7 } 8 //如果当前数组的第i个已经保存进了临时数组n,那么跳过,否则把当前项push到临时数组里面 9 //若返回-1,表明没有在临时数组中找到,若不能于-1,则表明在临时数组中已有值 10 //indexOf用于查找指定字符串值在字符串中首次出现的位置,没有找到的话返回 -1 11 12 function arr2() { 13 var n = {},r=[]; 14 for(var i=0; i<this.length; i++) { 15 if (!n[this[i]]) { 16 n[this[i]] = true; 17 r.push(this[i]); 18 } 19 } 20 return r; 21 } 22 //n为hash表,r为临时数组 23 //如果hash表中没有当前项,就存入hash表 24 //并把当前数组的当前项push到临时数组里面 25 26 function arr3() { 27 var n = [this[0]]; 28 for(var i = 1; i < this.length; i++) { 29 if (this.indexOf(this[i]) == i) { 30 n.push(this[i]); 31 } 32 } 33 return n; 34 } 35 //n为结果数组,从第二项开始遍历 36 //如果当前数组的第i项在当前数组中第一次出现的位置不是i 37 //那么表示第i项是重复的,忽略掉。否则存入结果数组 38 //要是有重复的,那么重复出现的那个x第一次出现的位置就不是重复出现的位置了 39 //比如x第一次出现在3位,重复x出现在5位,indexOf查询到首次出现的位置是3位,那么5位的x就是重复的
原文:http://www.cnblogs.com/kino156/p/6250071.html