美文网首页
数组去重

数组去重

作者: 刘宏儿 | 来源:发表于2018-12-01 15:49 被阅读0次

    代码如下:

    <script>
     function noRepeat(a) {
         var arr = a;//定义一个数组用来接收从外边传进来的数组
         var arr2 = [];//定义一个空数组,用来放不重复的新的数组
         for(var i=0;i<arr.length;i++){//遍历数组
                var flag = true;//定义一个开关没来决定放不放入新数组
                for (j=0;j<arr2.length;j++){//遍历新数组
                    if(arr[i]===arr2[j]){//如果相等,就不放了
                        flag=false;
                        break;
                    } 
                }
                if(flag){
                    arr2.push(arr[i])
                }
    
    
         }
         return arr2;
       }
    var a = [1,2,3,3,4,4,4,5,8,8,8];
    var res = noRepeat(a);
     console.log(res);
    </script>
    

    分析:数组去重,就是数组里有重复的元素,要将他去掉,类比一个袋子①里有五颜六色的很多颜色相同的球,要将颜色一样的去掉,颜色相同的只留一个,那么我们会怎么做呢?
    首先要准备一个空袋子②------创建一个新的空的数组
    然后在袋子①里找球----遍历第一个数组里的值
    第一个球肯定是要放到新的袋子里的,这个不用考虑
    从袋子①里拿到第二个球,就和袋子②里放入的球比较,如果相同就不放到新袋子里了,扔出去---break
    然后继续,直到把袋子里的球拿完。
    在这里要加一个开关,开关关着就不让放,开关开着,就放到新袋子里。
    为什么要加开关呢?当我拿到一个,它必须和袋子②里的每个球都对比一下,也就是新数组里的值必须遍历完才可以添加,不然只和袋子②里的第一个比较看见不同,就添加进去,其实里面已经有一个相同颜色的,那不就达不到去重的效果了吗?解决这个问题的办法就是要加一个开关。在袋子②遍历完成之后,如果开关开着,才可以加球。

    相关文章

      网友评论

          本文标题:数组去重

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