合并数组且去除重复


合并数组和去除重复:

用到的concat()、filter()、reduce() 、indexOf()等方法

在使用这些方法的时候,需要特别注意的是:分清楚filter()、reduce()、map()三个方法;查看了相关的手册,简单的记录一下相关的返回情况,更多内容,请查看对应的手册:

1). map()

返回值:一个新数组,其结果是该数组中每个元素都调用一个提供的回调函数后返回的结果。原数组不会被改变。

2). reduce()

返回值:遍历数组,调用回调函数,将数组元素组合;reduce从最小开始,reduceRight()则相反

3). filter()

返回值:原数组的一个子集(相当于一个新数组),回调函数用于逻辑判断返回,true>>返回当前元素,false>>不返回

以下是FCC上的进阶题,我整理的代码,这个题耗了一些时间,最后参考 https://www.jianshu.com/p/51301859043c才基本搞清楚的:

function unite(arr1, arr2, arr3) {
    //newArr=(arr1.concat(arr2)).concat(arr3);//数组的个数不确定,此方法不可用
    //使用reduce 合并数组
    var args=Array.from(arguments);//调用unite函数的参数 
    var newArr=args.reduce(function(prev,cur){//prev>>初始值 cur>>当前的值
      return prev.concat(cur);
    });
    //去除数组中的重复值
   var outArr=newArr.filter(function(value,index){//value 当前的值 index>>当前值的索引
   //因为indexOf()返回value出现的第一个索引位置 index是当前值得索引位置
   return newArr.indexOf(value)==index;
 }); 
  return outArr;
}


新手上路,记录以下,方便以后翻阅


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章