[javascript] map/reduce 用法與解析

在 javascript 中的陣列有兩個函式方法為 map/reduce

map:

不改變目前陣列結構(長度、元素量)的情況下,將其中元素做一些處理或修改後複製至新陣列。

map 方法會針對陣列中的每個元素呼叫一次回呼函式(callback)。

回呼函式(callback)有三個參數

  • value:元素的值
  • index:元素在陣列中的索引值
  • array:處理前的原陣列

比如說我們想將陣列中的值都改為平方值:

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]

 

reduce:

將目前陣列中的所有元素做累加的動作,例如加總所有元素,將回傳元素之累加總和。

reduce方法會針對陣列中的每個元素呼叫一次回呼函式(callback),並且提供兩個參數

  • callback:走訪每個元素所呼叫的回呼函式。
  • initialValue:初始值,可能是累加的初始值。若未傳入此參數則會從第二個元素開始呼叫回呼函式。

回呼函式(callback)有四個參數

  • previousValue:上一個元素呼叫回呼函式所傳回的值
  • currentValue:目前陣列元素的值
  • curretnIndex:目前陣列元素的索引值
  • array:處理前的原陣列

比如我們今天想將陣列中的所有元素加總

var numbers=[1, 3, 5, 7, 9];
var result=numbers.reduce(function(previousValue, currentValue, currentIndex, array){
    return previousValue+=currentValue;
});
console.log(result);
// 25

 

 

參考資料:

https://msdn.microsoft.com/zh-tw/library/ff679975(v=vs.94).aspx

Leave a Reply

Your email address will not be published. Required fields are marked *