雖然有些概念類似甚至可以相通,但這裡並不是指常聽到的「MapReduce」,本文目的不是要討論如何運用 MapReduce 這樣的架構去處理大資料庫。這裡真正要討論的是,如何使用 JavaScript 裡陣列(Array)中的 .map() 和 .reduce() 方法,並把一些常見的使用方法和情境描述出來大家進行參考。
很多人對這兩個方法不習慣,原因不外乎是這兩種方法本來就不是一個非常直覺的東西,在大多數 JavaScript 語言的開發情境中,其實也沒有非得使用的理由。但不得不說,習慣了這兩個對陣列操作的方法,程式碼會變得簡潔,也更容易能處理一整批的資料。有時也能順便學習到一些「Functional Programming」會用到的概念,無論是在改善程式品質,還是投資自己的角度上,都有相當好處。
從最簡單的遍歷陣列開始
面對一個陣列裡的一堆資料,我們一定是從遍歷開始,一一處理裡面的每一筆資料。你也許已經非常熟悉如何遍歷陣列,最常見的不外乎就是兩種做法。
使用 for-loop:
var myArr = [ 1, 2, 3 ];
for (var index in myArr) {
console.log(myArr[index]);
}
使用陣列內建的 forEach 方法:
var myArr = [ 1, 2, 3 ];
myArr.forEach(function(element) {
console.log(element);
});
使用 .map() 對每個陣列元素加工
有些時候,我們想對每個陣列元素(Element)進行加工處理,於是最土法煉鋼的方法大概就是這樣:
幫每個元素加一:
var myArr = [ 1, 2, 3 ];
for (var index in myArr) {
myArr[index] = myArr[index] + 1;
}
// [ 2, 3, 4 ]
console.log(myArr);
這時你可以使用 .map() 方法來達成同樣目的:
var myArr = [ 1, 2, 3 ];
var newArr = myArr.map(function(element) {
return element + 1;
});
// [ 2, 3, 4 ]
console.log(new…
留言
張貼留言