Javascript中数组查重的⽅法总结⼤全
数组查重:简单点说,就是出数组中重复的元素然后去除,最后得到⼀个没有重复元素的数组。
// ⽅法⼀思路:
1.构建⼀个新的数组,⽤于存放结果。
2.for循环中每次从数组取出⼀个元素,⽤这个元素与结果数组的中的每个元素相⽐。
3.若结果数组中没有和取出的元素相同,则存放在结果数组中。
[javascript]
1. //⾃定义函数
2. var ret= function(arr){
3.    var res=[arr[0]];
4.    for(var j=1;j<arr.length;j++){
5.        var repeat= false;
6.        for(var i=0;i<res.length;i++){
7.            if(arr[j]==res[i]){
8.                repeat=true;
9.                break;
10.            }
11.        }
12.        if(!repeat){
13.            res.push(arr[j]);
14.        }
15.    }
16.    return res;
17. };
18. var a=[1,3,4,3,5,'aa','bb','aa'];
19. document.write(ret(a));  //1,3,4,5,aa,bb
20.
21. //或者给数组添加⽅法
22. = function(){
23.    var res=[this[0]];
24.    for(var j=1;j<this.length;j++){
25.        var repeat= false;
26.        for(var i=0;i<res.length;i++){
27.            if(this[j]==res[i]){
28.                repeat=true;
29.                break;
30.            }
31.        }
32.        if(!repeat){
33.            res.push(this[j]);
34.        }
35.    }
36.    return res;
37. }
38. var a=[1,3,4,3,5,'aa','bb','aa'];
39. document.());  //1,3,4,5,aa,bb
//⽅法⼆思路:(有点:查重效率⾼;缺点:由于查重之前对数组进⾏了排序,还回结果也是排序的,如果不改变原数组的顺序去重,那这种⽅法便不可取了。)
1.⾸先给原数组进⾏排序。
2.检查原数组的第i个元素与结果数组的最后⼀个元素是否相等。因为已经排序,所以重复元素会在相邻位置。
3.如果不相同,则将该元素存⼊结果数组中。
[javascript]
1. //⾃定义函数
2. var ret1= function(arr){
3.    arr.sort();
4.    var res= [arr[0]];
5.    for(var i=1;i<arr.length;i++){
6.        if(arr[i]!=res[res.length-1]){
7.          res.push(arr[i]);
8.        }
9.    }
10.    return res;
11. }
12. var b= [1,3,4,2,3,4];
13. document.write(ret1(b));  //1,2,3,4
14.
15. //或者给数组添加⽅法
16. 1= function(){
17.    this.sort();
18.    var res= [this[0]];
19.    for(var i=1;i<this.length;i++){
20.        if(arr[i]!=res[res.length-1]){
21.          res.push(this[i]);
22.        }
23.    }
24.    return res;
25. }
26. var b= [1,3,4,2,3,4];
27. document.1());  //1,2,3,4
28.
/⽅法三思路:(推荐使⽤这个⽅法)
1.定义⼀个结果数组存放结果。
2.创建⼀个新对象。
3.for循环的时候,每次取出⼀个元素与对象对⽐,如果这个元素不重复则把它放在结果数组⾥,同时把这个元素的内容作为对象的属性,并赋值为1。
说明:⾄于如何对⽐取出的元素与对象,就是每次从原数组取出⼀个元素,然后到对象中访问这个属性,如果访问到值,则说明重复。[javascript]
1. //⾃定义函数
2. var ret2= function(arr){
3.    var res=[];
4.    var json={};javascript数组对象
5.    for(var i=0;i<arr.length;i++){
6.        if(!json[arr[i]]){
7.          res.push(arr[i]);
8.          json[arr[i]]=1;
9.        }
10.    }
11.    return res;
12. }
13. var c=[1,2,3,2,1];
14. document.write(ret2(c)); //1,2,3
15.
16. //或者给数组添加⽅法
17. 2= function(){
18.    var res=[];
19.    var json={};
20.    for(var i=0;i<this.length;i++){
21.        if(!json[this[i]]){
22.          res.push(this[i]);
23.          json[this[i]]=1;
24.        }
25.    }
26.    return res;
27. }
28. var c=[1,2,3,2,1];
29. document.2()); //1,2,3