Array.reduce() 累計值處理
- 詳細內容
- 分類:Javascript
- 發佈:2013-03-10, 週日 21:52
- 點擊數:3051
Javascript的Array.reduce()方法:
Array.reduce()方法的參數是一個回呼函式,reduce()方法會由左至右的為陣列中的每個元素呼叫一次回呼函式,並將回呼函式的傳回值當作下一次呼叫回呼函式的參數傳入。reduce()方法定義在ECMA-262第五版中,可能會有些瀏覽器不支援此方法。若要確定在所有瀏覽器中都能正確的執行,可以在原型中自行定義此方法。若是陣列中的元素沒有給定初始值,那reduce()方法會跳過該元素不會呼叫回呼函式,如果給定的初始值是undefined一樣也會呼叫。
Array.reduce()的語法:
array.reduce( callbackfn [ , initialValue] )
callbackfn:回呼函式,reduce()方法利用此函式來處理陣列中的元素,
callbackfn有四個傳入值previousValue、currentValue、index、array,
previousValue:前一次callbackfn的傳回值。
currentValue:當前的元素值。
index :當前元素索引。
array:目前處理中的陣列。
傳回值:回呼函式會有一傳回值,此傳回值當成下一次callbackfn()的previousValue參數。
initialValue:初始值,此參數可以省略,如果是有設定,那麼第一次呼叫callbackfn()的previousValue參數會等於這個初始值,currentValue會是陣列的第一個有值的元素,若是沒有設定initialValue,那第一次呼叫callbackfn()時,previousValue參數會等於陣列的第一個有值的元素,currentValue會是陣列的第二個有值的元素。
Array.reduce()的範例:
從1加到10,未給定初始值:
Array.reduce()的範例輸出:
第1次呼叫add:previousValue=1, currentValue=2, index=1, 傳回值=3
第2次呼叫add:previousValue=3, currentValue=3, index=2, 傳回值=6
第3次呼叫add:previousValue=6, currentValue=4, index=3, 傳回值=10
第4次呼叫add:previousValue=10, currentValue=5, index=4, 傳回值=15
第5次呼叫add:previousValue=15, currentValue=6, index=5, 傳回值=21
第6次呼叫add:previousValue=21, currentValue=7, index=6, 傳回值=28
第7次呼叫add:previousValue=28, currentValue=8, index=7, 傳回值=36
第8次呼叫add:previousValue=36, currentValue=9, index=8, 傳回值=45
第9次呼叫add:previousValue=45, currentValue=10, index=9, 傳回值=55
After Array.reduce():55
在原型中新增Array.reduce()方法:
Array.reduce()方法是ECMS-262中的標準方法,但並非所有瀏覽器都支援,為確保在所有瀏覽器中都能正確執行,可自行在原型中定義該方法。下面是來自MDN中Array reduce method的程式,將其放入<script>的開頭:
關於Array物件的其他屬性與方法,請參考:陣列物件 Array。
按個讚!~支持本站!~
你可能會有興趣的文章
- Array.map()迭代舊陣列元素產生新陣列
- Array.some()檢查是否有任一陣列元素通過測試
- Array.every()測試所有陣列元素
- Array.forEach()迭代整個陣列元素
- Array.filter()過濾陣列元素
- 關聯式陣列