假設有一個函數f(x)=x²;作用在一個數組[1,2,3,4,5,6,7,8,9],通常我們會用遍歷的方法來實現。
function f(x){ return x * x; } var arr = [1,2,3,4,5,6,7,8,9]; var result = []; for(var i=0; i<arr.length; i++){ result.push(f(arr[i])) }
這樣的確可以實現,但我們有更優雅的實現。
function f(x) { return x * x; } var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(f); // [1, 4, 9, 16, 25, 36, 49, 64, 81]
map()方法定義在JavaScript的Array中,我們調用Array的map()方法,傳入我們自己的函數,就得到一個新的Array作為結果。map傳入的參數時f,即函數本身。
所以,map()作為高階函數,事實上它把運算規則抽象了。因此我們不光可以用來計算簡單的f(x)=x²,還可以計算任意復雜度的函數,比如將數組的所有數字轉化為字符串:
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(String); // ['1', '2', '3', '4', '5', '6', '7', '8', '9']
