合併數組且去除重複


合併數組和去除重複:

用到的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;
}


新手上路,記錄以下,方便以後翻閱


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