map:[Day 47] [JavaScript] ES6 map & forEach
filter:[Day 48] [JavaScript] ES6 - filter
今天是上 map / filter / reduce 的組合中最後一個 function:reduce!
ES6 sandbox 裡面有的題目:
✅ //Map -Create a new array by doing something with each item in an array.
✅ //Filter - Create a new array by keeping the items that return true.
⇨⇨⇨ //Reduce - Accumulate a value by doing something to each item in an array.
//Find - find the first item that matches from an array.
//FindIndex - find the index of the first item that matches.
對每個 array 裡面的 item 來做些什麼事,來累加 value。
var numbers = [9, 10, 11];
比如說可以把 numbers
裡面所有的 item 加起來。
要完成以上的結果,也可以用 forEach
:
var numbers = [9, 10, 11];
var newNum = 0;
numbers.forEach(
function(num){
newNum = newNum + num //或是: newNum += num
}
);
console.log(newNum)
//30
用 Reduce
的話,就會變得比較簡潔些,至少可以少一個變數:
var numbers = [9, 10, 11];
// var newNum = 0; 這邊是由Accumulate替代,所以不用這個變數了。
var newNum = numbers.reduce(
function(Accumulate, num){
return Accumulate + num
}
);
console.log(newNum)
另外也可以用 console.log 看一下這個 function 是怎麼運作的:
var numbers = [9, 10, 11];
// var newNum = 0;
var newNum = numbers.reduce(
function(Accumulate, num){
console.log('Accumulate'+Accumulate);
console.log('num'+num);
return Accumulate + num;
}
);
console.log(newNum)
結果是這樣:
Accumulate9
num10
Accumulate19
num11
30
所以就可以很清楚地知道,第一次運算的時候,Accumulate
已經設定第一個 item 為第一個 value,然後 num
是第二個 item 為第二個 value。再下一次運算的時候,Accumulate
和 num
已經相加好,並且要加上 num
新的值(下個 item)並運算出最終的結果。
下一次的課程會是 find function 的介紹~