美文网首页
多种js数组去重的方法

多种js数组去重的方法

作者: Top_Chenxi | 来源:发表于2016-06-14 02:07 被阅读182次
    require(['jquery'], function($) {
    
        // 数组去重
    
        // 获取数组
        function getArray(length) {
            var tmpArray = [];
            for (var i = 0; i < length; i++) {
                tmpArray.push(Math.floor(Math.random() * 10 + 1));
            }
            return tmpArray;
        }
    
    
        /*
            开始介绍下jquery的去重方法,简单粗暴
        */
    
        var myArray = getArray(20);
    
        console.log("排序前:", myArray);
    
        console.log("排序后:", $.unique(myArray));
    
        /*
            方法一(慢到没朋友)
    
            1.构建一个新的数组存放结果
    
            2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比
    
            3.若结果数组中没有该元素,则存到结果数组中
    
        */
        function unique_method1(array) {
            var tmpArray = [array[0]];
            for (var i = 1, len = array.length; i < len; i++) {
                var flag = false;
                for (var j = 0, tmpLen = tmpArray.length; j < tmpLen; j++) {
                    if (array[i] == tmpArray[j]) {
                        flag = true;
                        break;
                    }
                }
                if (!flag) {
                    tmpArray.push(array[i])
                }
            }
            return tmpArray;
        }
        var myArray = getArray(20);
    
        console.log("排序前:", myArray);
    
        console.log("排序后:", unique_method1(myArray));
    
        /*
                方法二:(高效)
    
                1.创建一个新的数组存放结果,创建一个空对象来记录存放
    
                2.for循环时,每次取出一个元素与记录存放进行对比,如果这个元素不重复,
                  则把它存放到结果数组中,并在对象中记录下来。
        */
    
        function unique_method2(array) {
            var tmpArray = [];
            var tmpObj = {};
            for (var i = 0, len = array.length; i < len; i++) {
                if (!tmpObj[array[i]]) {
                    tmpArray.push(array[i]);
                    tmpObj[array[i]] = 1;
                }
            }
            return tmpArray;
        }
    
        var myArray = getArray(20);
    
        console.log("排序前:", myArray);
    
        console.log("排序后:", unique_method2(myArray));
    
        /*
                方法三(高效,但改变顺序)
    
                1.先将原数组进行排序
    
                2.检查原数组中的第i个元素 与 结果数组中的最后一个元素是否相同,
                  因为已经排序,所以重复元素会在相邻位置
    
                3.如果不相同,则将该元素存入结果数组中
        */
    
        function unique_method3(array) {
            array.sort();
            var tmpArray = [array[0]];
            for (var i = 1, len = array.length; i < len; i++) {
                if (array[i] !== tmpArray[tmpArray.length - 1]) {
                    tmpArray.push(array[i]);
                }
            }
            return tmpArray;
        }
    
        var myArray = getArray(20);
    
        console.log("排序前:", myArray);
    
        console.log("排序后:", unique_method3(myArray));
    
    
    
    })
    

    相关文章

      网友评论

          本文标题:多种js数组去重的方法

          本文链接:https://www.haomeiwen.com/subject/icxudttx.html