- Published on
Javascript Reduce
- Author
- Name
- yceffort
๋ฉ์ฒญ์ด๋ผ ๊ทธ๋ฐ์ง reduce
ํจ์๊ฐ ์ ์ดํด ๋์ง ์์๋ค.
Reduce
const list = [1, 2, 3, 4, 5]
const initValue = 10
const totalSum = list.reduce(
(accumulator, currentValue, currentIndex, array) => {
return accumulator + currentValue
},
initValue,
)
25
currentValue
: ์ฒ๋ฆฌํ ํ์ฌ ์์currentIndex
(optional): ์ฒ๋ฆฌํ ์์์ ์ธ๋ฑ์คaccumulator
: ์ฝ๋ฐฑ์ ๋ฐํ๊ฐ์ ๊ณ์ํด์ ๋์ ํ๋ค. ์ด ์์ ์์๋ ์ฒ์์1
, ๊ทธ ๋ค์์1 + currentValue
, ๊ทธ ๋ค์์(1 + currentValue) + currentValue
๊ฐ ๋ ๊ฒ์ด๋ค.array
(optional):reduce
๋ฅผ ํธ์ถํ ๋ฐฐ์ด, ์ฌ๊ธฐ์๋list = [1, 2, 3, 4, 5]
์ด ๋ ๊ฒ์ด๋ค.initValue
(optional):reduce
์ ์ต์ด ๊ฐ. ์์ผ๋ฉด ๋ฐฐ์ด์ 0๋ฒ์งธ ๊ฐ์ด ๋๋ค. ์ด ์์ ์์๋initValue
๊ฐ์ด 10 ์ด๋ผ์, ์ต์ข ๊ฒฐ๊ณผ๋10 + (1 + 2 ... + 5)
์ด ๋ ๊ฒ์ด๋ค.
call | accumulator | currentValue | currentIndex | array | return |
---|---|---|---|---|---|
1st | 10 | 1 | 0 | [1,2,3,4,5] | 11 |
2nd | 11 | 2 | 1 | [1,2,3,4,5] | 13 |
3rd | 13 | 3 | 2 | [1,2,3,4,5] | 16 |
4th | 16 | 4 | 3 | [1,2,3,4,5] | 20 |
5th | 20 | 5 | 4 | [1,2,3,4,5] | 25 |
์ค์ฒฉ ๋ฐฐ์ด ํผ์น๊ธฐ
const complicatedList = [[0, 1], [2, 3], [4], [5, 6]]
complicatedList.reduce(
(accumulator, currentValue) => accumulator.concat(currentValue),
[],
)
[0, 1, 2, 3, 4, 5, 6]
์ด๋ณด๋ค ๋ ๊ดด๋ํ array์ ๊ฒฝ์ฐ์๋ ์ฌ๊ท๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฅํ๋ค.
const moreComplicatedList = [[0, 1], [[[2, 3]]], [[4, 5]], 6]
const flatten = function (arr, result = []) {
for (let i = 0, length = arr.length; i < length; i++) {
const value = arr[i]
if (Array.isArray(value)) {
flatten(value, result)
} else {
result.push(value)
}
}
return result
}
flatten(moreComplicatedList)
[0, 1, 2, 3, 4, 5, 6]