zoukankan      html  css  js  c++  java
  • 数组去重的方法总结

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>数组去重的 3种方法</title>
    </head>
    <body>
    
        <script type="text/javascript">
            var demoAr = [3,4,5,5,7,2,1,4,3]; 
    
            // 方法一:遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组
            function unique1(ar){
                var newAr = [];
                for( var i=0; i<ar.length; i++ ){
                    if( newAr.indexOf(ar[i]) === -1 ){
                        newAr.push(ar[i]);
                    }
                }
                return newAr;
            }
    
            // 方法二:遍历数组,利用object对象保存数组值,判断数组值是否已经保存在object中,未保存则push到新数组并用object[arrayItem]=1的方式记录保存
            function unique2(ar){
                var newAr = [];
                var obj = {};
                
                for(var i=0, j=ar.length; i<j; i++){
                    if( !obj[ar[i]] ){
                        obj[ar[i]] = 1;
                        // console.log(obj);
                        newAr.push(ar[i]);
                    }
                }
                return newAr;
            }
    
            // 方法三:数组下标判断法, 遍历数组,利用indexOf判断元素的值是否与当前索引相等,如相等则加入
            function unique3(ar){
                var newAr = [];
                ar.forEach(function(item, index, array){
                    if( ar.indexOf(item) === index ){
                        newAr.push(item);
                    };
                });
                return newAr;
            }
    
            // 方法四:数组先排序, 然后比较俩数组一头一尾进行去重 (优点:效率高  缺点:会改变数组原有顺序)
            function unique4(ar){
                var newAr = [],
                    end;
                ar.sort();
                end = ar[0];
                newAr.push(ar[0]);
                for( var i=1; i<ar.length; i++ ){
                    if(ar[i]!=end){
                        newAr.push( ar[i] );
                        end = ar[i];
                    }
                }
    
                return newAr;    
            }
    console.log( unique1(demoAr) );
    // console.log( unique2(demoAr) ); // console.log( unique3(demoAr) ); // console.log( unique4(demoAr) );

    </script> </body> </html>

    参考自:http://www.cnblogs.com/leonwang/p/4845576.html

  • 相关阅读:
    JetBrains下载历史版本
    php入门笔记
    Ajax获取服务器信息
    Ubuntu上安装PHP环境-mysql+apache+php-Linux操作系统
    Ubuntu彻底删除/卸载mysql,php,apache
    轻松理解JS基本包装对象
    JS事件委托
    浅谈JS事件冒泡
    JS闭包那些事
    浅谈JS的变量提升
  • 原文地址:https://www.cnblogs.com/cnblogs-jcy/p/6892031.html
Copyright © 2011-2022 走看看