数组去重,面试必考题 JavaScript 数组对象的去重

JavaScript数组去重

1、原型去重法。通过prototype找到数组的源性对象Array,在数组的原型上添加unique()方法。需要使用的时候使用 点 “ . ” 进行连接。

  优点:扩展性比较高,复用性比较高。

  缺点:通过给数组对象扩展,新增方法,导致数组结构中有新增了一个方法。此时如果用for-in遍历,需要注意。会有一个unique的方法会当做key和value遍历出来。

  解决:

<!DOCTYPE html>
<html >

    <head>
        <meta charset="UTF-8" />
        <title>词法作用域</title>
    </head>

    <body>

        <script type="text/javascript">
         var arr=["1","2","3","1","4","5","4"];
                    Array.prototype.unique=function(){
                        var arr1=[];
                        for(var i=0; i<this.length; i++){
                            if(arr1.indexOf(this[i])==-1){
                                arr1.push(this[i]);
                            }
                        }
                        return arr1;
                    }
            alert(arr.unique().toString());          
        </script>
    </body>

</html>

使用for循环,条件自己设置。或者在for-in下加一个判断, 判断已有数组中是否包含这个对象元素。

JavaScript数组去重

1、原型去重法。通过prototype找到数组的源性对象Array,在数组的原型上添加unique()方法。需要使用的时候使用 点 “ . ” 进行连接。

  优点:扩展性比较高,复用性比较高。

  缺点:通过给数组对象扩展,新增方法,导致数组结构中有新增了一个方法。此时如果用for-in遍历,需要注意。会有一个unique的方法会当做key和value遍历出来。

  解决:

<!DOCTYPE html>
<html >

    <head>
        <meta charset="UTF-8" />
        <title>词法作用域</title>
    </head>

    <body>

        <script type="text/javascript">
         var arr=["1","2","3","1","4","5","4"];
                    Array.prototype.unique=function(){
                        var arr1=[];
                        for(var i=0; i<this.length; i++){
                            if(arr1.indexOf(this[i])==-1){
                                arr1.push(this[i]);
                            }
                        }
                        return arr1;
                    }
            alert(arr.unique().toString());          
        </script>
    </body>

</html>

使用for循环,条件自己设置。或者在for-in下加一个判断, 判断已有数组中是否包含这个对象元素。