zoukankan      html  css  js  c++  java
  • 每日分享!~ JavaScript数组去重

    数组去重

    数组去重在很多面试的过程中,都是大题出现!网络上出现了很多数组去重的方式。多数的达到了12种以上。

    今天我只给大家介绍两种我比较喜欢,比较认可!入手简单的~能解决自己的问题就可以了

    好了 ,不多bb,直接上代码:

    方式1:   indexOf

     <script>
            // 业务要求
            /**
                数组的去重
            **/
    
            // 方式1 使用indexof方式
            function ClearArray(arr){
                // 创建一个新的数组来存放去重之后的数组
                var newArr = []
                // 将传入数组进行循环遍历处理
                arr.forEach(item => {
                    // 使用indexof 判断newArr中数组是否存在,不存在的话直接push进去
                   if ( newArr.indexOf(item) === (-1)) {
                       newArr.push(item)
                   }
                })
                return newArr
            }
            // 测试数组
            var arr = [1,3,4,5,6,4,33,3,3,,4,3]
            console.log(ClearArray(arr))
            //结果 [1, 3, 4, 5, 6, 33]   
        </script>

    注意:这个判断是对于定义新数组去判断,不是对需要判断对数组。

    总结,利用indexOf方法判断新数组中是否存在该元素,不存在的话,push 到新数组中去,如果push过,在次判断的时候,就会显示存在,这样就会直接跳过。

    ----------------------------------------黄金分割线---------------------------------------------------------------

    方式2  splice()

    直接上代码:

     function ClearArray(arr){
                // 首先循环遍历该数组
                for(var i = 0; i<arr.length; i++){
                    for(var j=i+1; j<arr.length; j++){
                        //用第一个元素跟其他元素进行对比
                        if (arr[i] === arr[j]){
                            // 如果该元素跟本身元素相同,那么去掉该元素
                            arr.splice(j,1)
                            j--
                        }
                    }
                }
                // return 该元素
                return arr
            }
            var arr = [1,3,4,5,6,4,33,3,3,,4,3]
            console.log(ClearArray(arr))
         // 结果 [1, 3, 4, 5, 6, 33, empty]

    注意, 这个方式是通过二次循环来判断,一个元素同其他元素对比。如果与该元素相同的话,则需要通过splice方法,去掉该元素。

    -----------------------------分割线------------------------------------------

    总结以上两种方法的差异:

    相信大家通过结果。关注了两个方式的结果不一致,第一个结果去重:将空元素都去掉了。第二个方式没有,而是显示的empty 。

    如果该元素不需要空元素的话,建议使用第一种方式。如果需要的话, 建议使用第二种方式。

  • 相关阅读:
    cf B. Sereja and Suffixes
    cf E. Dima and Magic Guitar
    cf D. Dima and Trap Graph
    cf C. Dima and Salad
    最短路径问题(floyd)
    Drainage Ditches(网络流(EK算法))
    图结构练习—BFSDFS—判断可达性(BFS)
    Sorting It All Out(拓扑排序)
    Power Network(最大流(EK算法))
    Labeling Balls(拓扑)
  • 原文地址:https://www.cnblogs.com/yaogengzhu/p/10743177.html
Copyright © 2011-2022 走看看