Andy的前後端技術筆記、生活紀錄
Javascript的map,filter,reduce
發佈於: 2024-04-03 更新於: 2024-04-21 分類於: frontend > frontend_interview

什麼是map, filter, reduce

這三個東西都是ES5推出的Array method,的可以對Array裡面的元素做一些操作。

map

  • 會回傳一個新的array
  • 在map裡面用callback function對每個element 逐一做操作後回傳

map不會影響到原先的array,也不必用for之類的迴圈去一個一個處理後存回去,更多資訊可以查看MDN

1
2
3
4
5
const arr = [1,3,4,5];
const result = arr.map((item) => {
return item * 2;
});
// result = [2,6,8,10]

filter

可以用來過濾不符合callback function判斷式的元素,也就是在callback function中需要return true or false來決定是否要保留這個元素。
這個也是會回傳一個新的array,查看MDN

1
2
3
4
5
const arr = [1,3,4,5];
const result = arr.filter((item) => {
return item < 4;
});
// result = [1,3]

reduce

可以傳入一個acc,然後在callback function中會依次回傳acc和每個元素的一些操作,最後會回傳最終的value。
也就是每回合把acc和每個元素的值相加,最後就會回傳最終的value,而若是在reduce最後面一個參數帶上init value,就會被帶到acc當作初始值做累加。
參考 MDN

1
2
3
4
5
const arr = [1,3,4,5];
const result = arr.reduce((acc, item) => {
return acc + item;
},0)
// result = 15

item為arr中的每個元素,acc為reduce的第一個參數,假設想要把所有的值加起來,就可以用reduce來做,把每次值都累加到acc上,然後回傳最終值。

--- 到底拉 The End ---