zoukankan      html  css  js  c++  java
  • JavaScript 数组去重 方法汇总

    <!DOCTYPE html>
    <html lang="zh">
    
        <head>
            <meta charset="UTF-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
            <meta http-equiv="X-UA-Compatible" content="ie=edge" />
            <title>JavaScript 数组去重 面试题</title>
        </head>
    
        <body>
            <script type="text/javascript">
                var arr = [1, 2, 3, 4, 1, 2, 5];
                //方法一:ES6 set
                var newArr = [...(new Set(arr))];
                console.log(newArr);
                //方法二:
                function dicArr(arr) {
                    var newArr = [];
                    for(var i = 0, len = arr.length; i < len; i++) {
                        if(newArr.indexOf(arr[i]) == -1) {
                            newArr.push(arr[i]);
                        }
                    }
                    return newArr;
                }
                console.log(dicArr(arr));
                //方法三
                function dicArr2(arr) {
                    var newArr = [],
                        obj = {};
                    for(var i = 0, len = arr.length; i < len; i++) {
                        if(!obj[arr[i]]) {
                            obj[arr[i]] = 1;
                            newArr.push(arr[i]);
                        }
                    }
                    return newArr;
                }
                console.log(dicArr2(arr));
                //方法四
                function dicArr3(arr) {
                    for(var i = 0, len = arr.length; i < len; i++) {
                        for(var j = i + 1; j < len; j++) {
                            if(arr[i] == arr[j]) {
                                arr.splice(j, 1);
                                len--;
                                j--;
                            }
                        }
                    }
                    return arr;
                }
                console.log(dicArr3(arr));
                //方法五 说明使用map,filter,forEach都行
                function dicArr4(arr) {
                    var newArr = [];
                    //              arr.forEach(function(value,key,arr){
                    //                  var flag = arr.indexOf(value,key+1);
                    //                  if(flag == -1){
                    //                      newArr.push(value);
                    //                  }
                    //              });
                    //              arr.map(function(value, key, arr) {
                    //                  var flag = arr.indexOf(value, key + 1);
                    //                  if(flag == -1) {
                    //                      newArr.push(value);
                    //                  }
                    //              });
                    arr.filter(function(value, key, arr) {
                        var flag = arr.indexOf(value, key + 1);
                        if(flag == -1) {
                            newArr.push(value);
                        }
                    });
                    return newArr;
                }
                console.log(dicArr4(arr));
            </script>
        </body>
    
    </html>

    上述一共实现五种数组去重方法。

  • 相关阅读:
    日志组件一:Log4j
    HTTPS加密那点事--轻松秒懂HTTPS非对称加密
    图解Git
    Python 迭代器 & __iter__方法
    Fiddler 抓包工具总结
    Python使用struct处理二进制(pack和unpack用法)
    Python binascii
    常见证书格式及相互转换
    MyBatis Generator 详解
    MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
  • 原文地址:https://www.cnblogs.com/mengfangui/p/8674837.html
Copyright © 2011-2022 走看看