Sorted Union--多个数组按原顺序合并并去除重复值

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

实现思路为,传入的所有数组组合为一个数组,然后去重即可;

我的代码如下:

function unite(arr1, arr2, arr3) {
  var bigarr=[];
  //因为不确定拼接数组的个数,即不确定参数个数,所以用arguments来进行参数的遍历,把所有的数组组合为一个数组,
  for(var j=0,len=arguments.length;j

这样写呢,思路是对的,但是过程略微复杂了点,在js中有更精简的方法实现,即利用 Arguments object  和  Array.reduce(),

  • arguments 是一个类似数组的对象, 对应于传递给函数的参数。
  • arguments对象不是一个 Array 。它类似于数组,但除了 长度之外没有任何数组属性。可以使用  Array.from()方法或 spread 运算符将 arguments 转换为真正的数组:
  • 而数组中的reduce方法则可以进行数组拼接,然后用filter()方法进行数组去重即可;
    function unite(arr1, arr2, arr3) {
      var args = Array.from(arguments);
      var arr = args.reduce(function(prev,cur){
        return prev.concat(cur);
      });
      return arr.filter(function(item,index,arr){
        return arr.indexOf(item) === index;  
      });
    }
    unite([1, 3, 2], [5, 2, 1, 4], [2, 1]);

你可能感兴趣的:(JavaScript)