美文网首页前端路
Sorted Union freeCode

Sorted Union freeCode

作者: sai233 | 来源:发表于2017-07-27 16:50 被阅读0次

    写一个 function,传入两个或两个以上的数组,返回一个以给定的原始数组排序的不包含重复值的新数组。

    换句话说,所有数组中的所有值都应该以原始顺序被包含在内,但是在最终的数组中不包含重复值。

    非重复的数字应该以它们原始的顺序排序,但最终的数组不应该以数字顺序排序。

    
    function unite(arr1, arr2, arr3,arr4) {
    //存放数组
                var newArr;
    //这里的判断有点鸡肋哈,毕竟参数有可能会出现更多个,而不是固定的2,3个
                if(arr3,arr4){
                    newArr = arr1.concat(arr2,arr3,arr4);   
                }else if(arr3){
                    newArr = arr1.concat(arr2,arr3);
                }else if(arr2) {
                    newArr = arr1.concat(arr2);
                }else{
                    newArr = arr1;
                }
    //bigArr是内循环用的,在这里赋值刚好可以把处理好的newArr赋值给他,而相对的位置就会不变
                var bigArr = newArr;
                for(var i = 0;i < newArr.length;i++){
                    for(var t = 0;t < bigArr.length;t++){
    //拿newArr的当前元素和bigArr每个元素比较,出现相同的,先判断是否位置相同,如果是的话则
    //表示是同一个,继续下个元素比较。
                        if(newArr[i] == bigArr[t]){
                            if(i == t){
                                continue;
                            }else{
    //要去除的位置就是目前对比的位置
                                newArr.splice(t,1);
                            }
                        }
                    }
                }
                return newArr;
            }
    

    <h2>这个呢是我自己写的,前面的判断又臭又长哈。但每次的经历都让我倍感开心。</h2>
    <h6>其实思路都是差不多的,比较,然后要么剔除相同的元素,要么添加没有的元素。下面这个是别人写的,比我的好懂多了哈</h6>

    
    function unite(arr1, arr2, arr3) {
                var newArr =[];
                for(var i =0;i < arguments.length;i++){
    //这里遍历参数,传进来几个数组就是几个。都会被接受的,第一个方案的话是不行的,如果传进来
    //的5,6个或更多个,多余的会出现undefined的。然后把遍历到的数组赋值给变量。
                    var newA = arguments[i];
                    for(var t= 0;t< newA.length;t++){
    //这里得到的元素用来判断是否存在于newArr里面,如果没有是-1,有的话是正数
                        var newB = newA[t];
                        if(newArr.indexOf(newB)<0){
                            newArr.push(newB);
                        }
                    }
                }
                return newArr;
            }
    

    <h3>这个是官方写的哈,但重要的是理解它的思路!</h3>
    <h6>这里建议各位在做题的时候先自己做,无论觉得多糟糕,只有是你自己做的你才会知道你自己的不足在哪里!之后再参考官方的思路,这样自己也会得到提升</h6>

    相关文章

      网友评论

        本文标题:Sorted Union freeCode

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