美文网首页程序员
Sorted Union--合并数组并且去重

Sorted Union--合并数组并且去重

作者: Ytsssss | 来源:发表于2017-09-07 11:03 被阅读0次

    问题:

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

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

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

    代码:

    function unite(arr1, arr2, arr3) {

        var arrs = Array.from(arguments);//将arguments转化为数组

        var arr=[];

        for(var i=0;i<arrs.length;i++){

          arr=arr.concat(arrs[i]);//将几个数组合并

        }

        var answer=[];

        for(i=0;i<arr.length;i++){

          if(arr.indexOf(arr[i])==i){

           //如果第一次出现arr[i]的位置为i,表示arr[i]到现在为止只出现一次

            answer.push(arr[i]);

          }

        }

        return answer;

    }

    思路:

    首先将arguments转化为数组,然后使用concat()方法将数组合并。合并完成后对数组进行去重处理,这里使用的方法是利用indexOf()方法得到每个字符最初出现的位置,如果与当前位置相同则表示第一次出现,将字符存入结果中,如果不相同则表示之前出现过。

    ps:

    arguments是一个类似数组的对象, 对应于传递给函数的参数。

    深入理解indexOf()方法,利用indexOf()做去重处理比较方便,如果可以改变数组顺序可以先利用sort()方法将数组排序然后判断相邻字符是否相等以此达到去重的目的。

    相关文章

      网友评论

        本文标题:Sorted Union--合并数组并且去重

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