在 javascript 中的陣列有兩個函式方法為 map/reduce
map:
不改變目前陣列結構(長度、元素量)的情況下,將其中元素做一些處理或修改後複製至新陣列。
map 方法會針對陣列中的每個元素呼叫一次回呼函式(callback)。
回呼函式(callback)有三個參數
- value:元素的值
- index:元素在陣列中的索引值
- array:處理前的原陣列
比如說我們想將陣列中的值都改為平方值:
[javascript] var numbers=[1, 3, 5, 7, 9]; var result=numbers.map(function(value, index, array){ return value*value; }); console.log(result); // [1, 9, 25, 49, 81] [/javascript]
reduce:
將目前陣列中的所有元素做累加的動作,例如加總所有元素,將回傳元素之累加總和。
reduce方法會針對陣列中的每個元素呼叫一次回呼函式(callback),並且提供兩個參數
- callback:走訪每個元素所呼叫的回呼函式。
- initialValue:初始值,可能是累加的初始值。若未傳入此參數則會從第二個元素開始呼叫回呼函式。
回呼函式(callback)有四個參數
- previousValue:上一個元素呼叫回呼函式所傳回的值
- currentValue:目前陣列元素的值
- curretnIndex:目前陣列元素的索引值
- array:處理前的原陣列
比如我們今天想將陣列中的所有元素加總
[javascript] var numbers=[1, 3, 5, 7, 9]; var result=numbers.reduce(function(previousValue, currentValue, currentIndex, array){ return previousValue+=currentValue; }); console.log(result); // 25 [/javascript]
參考資料:
https://msdn.microsoft.com/zh-tw/library/ff679975(v=vs.94).aspx