数组去重

一、用数组的 indexO方法检测

    function unique(arr) {

        var arr1 = [];

        for (var i = 0; i < arr.length; i++){

            if (arr1.indexOf(arr[i]) === -1){

                arr1.push(arr[i]);

            }

        }

        return arr1;

    }

    考虑 indexOf 的兼容性, 实现Array.prototype.indexOf:

    Array.prototype.indexOf = Array.prototype.indexOf || function(searchElement, fromIndex){

        //是否传入第二个参数,以及传入的第二个参数为负数

        fromIndex = fromIndex || 0;

        if( fromIndex < 0 ){

            fromIndex += this.length;

            if( fromIndex < 0 ){

                fromIndex = 0;

            }

        }

        for( ; fromIndex < this.length; fromIndex++){

            if(this[fromIndex] === searchElement){

                return fromIndex;

            }

        }

        return -1;

    }

 

二、利用对象键值判断  (不能正确解析 1与 '1')

    function unique1(arr){

        var obj = {}, arr1 = [];

        for(var i = 0; i < arr.length; i++){

            if(!obj.hasOwnProperty(arr[i])){

                obj[arr[i]] = true;

                arr1.push(arr[i]);

            }

        }

        return arr1;

    }

三、ES6中的Array.from() 以及 new Set()

    function unique2(arr){

        return Array.from(new Set(arr));

    }

posted @ 2018-12-20 10:50  卒卒卒  阅读(98)  评论(0编辑  收藏  举报