1. 程式人生 > >使用reduce同時實現map和filter

使用reduce同時實現map和filter

假設現在有一個數列,你希望更新它的每一項(map的功能)然後篩選出一部分(filter的功能)。如果是先使用map然後filter的話,你需要遍歷這個陣列兩次。

在下面的程式碼中,我們將數列中的值翻倍,然後挑選出那些大於50的數。有注意到我們是如何非常高效地使用reduce來同時完成map和filter方法的嗎?

  1. const numbers =[10,20,30,40];

  2. const doubledOver50 = numbers.reduce((finalList, num)=>{

  3.   num = num *2;

  4. if(num >50){

  5.    finalList.push(num);

  6. }

  7. return

    finalList;

  8. },[]);

  9. doubledOver50;// [60, 80]

2.2 使用reduce取代map和filter

如果你認真閱讀了上面的程式碼,你應該能理解reduce是可以取代map和filter的。