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

问题:

写一个 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()方法将数组排序然后判断相邻字符是否相等以此达到去重的目的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,M...
    顽皮的雪狐七七阅读 4,259评论 0 6
  • 数组的定义 数组是按序号排列的一组值,每个值的位置都有编号(从0开始)。数组本质上是一种特殊的对象。它的键名是按(...
    Allin_Lin阅读 583评论 0 0
  • JS基础讲解 JavaScript组成ECMAScript:解释器、翻译DOM:Document Object M...
    FConfidence阅读 592评论 0 1
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,275评论 0 4
  • 最近的一个项目碰到部署Hadoop的机器的负载很高,经常出现状态为D的进程,导致该机器机器不稳定。通过查看kern...
    eriolchan阅读 1,809评论 0 2