JavaScript中函數式編程的體現--map和reduce

最近在學JavaScript,中間看到map和reduce方法,覺得挺有意思的,邊學邊寫下這篇博客。

這兩個函數都在某種程度上體現了函數式編程的思想,即將函數作爲傳入另一個函數的參數。

map()方法的調用者一般是個數組,參數是一個函數,稱爲callback,返回值是一個由原數組中每個元素執行給定callback函數的返回值組成的新數組。

也就是說,當你用map()方法時,是將組成數組中的每個元素作爲參數,傳進給定的函數,如果這個函數是有返回值的,則將每次執行函數得到的返回值組成一個新的數組返回。

function pow(x) {
    return x * x;
}

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81]

上面我們通過map()方法實現了將arr數組中的每個元素作爲pow()方法的參數,得到的返回值是每次執行pow()函數返回值的集合,也就是一個數組。

當然callback函數也是可以沒有返回值的,此時,視callback函數返回undefined。

var arr = [0, 1, 2, 3, 4, 5];

var arr1 = arr.map(function(item){ console.log(item) });
//打印 0 1 2 3 4 5 // arr1爲[undefined, undefined, undefined, undefined, undefined, undefined]

再來看reduce()方法,和map()方法一樣,調用者也是數組,不過這兒的callback函數有些不同,要求必須接收兩個參數。

reduce()方法按照從左到右的順序,先對第一、第二個元素執行callback函數,將得到的結果作爲一個參數繼續和下一個元素執行callback函數,直到數組中最後一個元素,構建一個最終返回值。

var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y) {
    return x + y;
}); // 25

這是一個利用reduce()方法進行數組求和的例子。

需要注意的是reduce()方法除了有callback函數作爲參數外,還可以有一個initialValue作爲參數,如果指定了 initialValue ,則使用 initialValue 作爲 callback 的第一個參數,數組中第一個元素作爲第二個參數。

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