μΈλ€μΌμ κ°μ μμ λν΄ κ°κ° reduce() μ forEach()λ₯Ό νμ©νμ λμ μ½λ κΈΈμ΄ λΉκ΅...
μ½λ©ν
μ€νΈλ₯Ό νλ€ for
λ¬Έμ μ΄μ©ν΄ μ΄μ€κ°κΉμ΄ κΈΈμ΄μ‘λ μ½λκ° reduce()
νλ°©μ ν μ€λ‘ μ 리λλ κ²μ λ³΄κ³ μμλ³΄κ² λ reduce()
ν¨μμ
λλ€βοΈ
1. reduce()
ν¨μλ΄μ callbackν¨μμ μ΄κΈ°κ°μ 맀κ°λ³μλ‘ λ£λλ€
arr.reduce(callback, initialValue)
//μ΄κΉκ°μ μλ΅ κ°λ₯
arr.reduce(callback)
2. μ½λ°±ν¨μμλ λμ κ°, νμ¬μμ, μΈλ±μ€κ°κ³Ό λ°°μ΄μ΄ 맀κ°λ³μλ‘ μ£Όμ΄μ§λ€
arr.reduce((acc, cur, idx, arr) => {})
acc(accumulator): μ½λ°±μ κ³μ°μμ λμ νμ¬ λ°ννλ μμ
cur(current value): μ²λ¦¬ν νμ¬ μμ
idx(index): νμ¬ μμμ μΈλ±μ€ κ°
arr(array): reduce()ν¨μλ₯Ό νΈμΆν λ°°μ΄(본체)
2-1. indexμ arr(reduceλ₯Ό νΈμΆν λ°°μ΄)μ optionalν κ°μΌλ‘ μλ΅μ΄ κ°λ₯νλ€
arr.reduce((acc, cur) => {})
2-2. μ΄κΈ°κ°μ΄ μλ κ²½μ° λμ κ°(acc)μ ν λΉλλ€
arr.reduce((0, cur, idx) => {}, 0)
3. μ½λ°±ν¨μ λ΄μ κ³μ°μμ μ€ννκ³ λμ κ°(acc)μ λ°ννλ€
let arr = [1,2,3,4]
// arrλ°°μ΄μ λͺ¨λ μμλ₯Ό λν λμ κ°μ 리ν΄νλ μ
arr.reduce((acc, cur) => acc + cur)
// 1 + 2 + 3 + 4
arr = 10;
μμ ν¨μμμ νλ‘ μμ±νμλ©΄
νμ(arr.length) | acc | + | cur | λμ κ° |
---|---|---|---|---|
1 | null | + | 1 | 1 |
2 | 1 | + | 2 | 3 |
3 | 3 | + | 3 | 6 |
4 | 6 | + | 4 | 10 |
=> μ΅μ’ μ μΌλ‘ 10μ λ°ν
*μ΄κΉκ°(initialValue)λ₯Ό μ€μ ν κ²½μ° null μ리μ ν λΉ
μ΄κΈ°κ°μ λ°°μ΄λ‘ λ§λ€μ΄ ν λΉνλ©΄ reduce()
ν¨μ νλλ‘ .map()
κ³Ό .filter()
λ±μ λμ ν μ μλ€
let arr = [1,2,3,4,5]
//λ°°μ΄μ λͺ¨λ μμλ₯Ό 2λ°° κ³±νμ¬ λ¦¬ν΄
arr.reduce((acc, cur) => {
acc.push(cur * 2)
return acc
}, [])
arr = [2,4,6,8,10]
// μλμ μκ³Ό κ°λ€
arr.map((cur) => cur * 2)
μμκ°μ΄ reduce()
ν¨μλ₯Ό μλ§ νμ©νλ©΄ λλΆλΆμ λ°°μ΄λ©μλλ₯Ό λμ ν μ μλ€κ³ νλ€ !
λ°°μ΄κ΄λ ¨ λ©μλλ€μ μΈμ κ° μ°¨κ·Όμ°¨κ·Ό 곡λΆν΄μΌκ² λ€κ³ μκ°λ§ νκ³ μ€μ²ν μ μ μμλλ°
μ½ν
λ¬Έμ λ₯Ό νλ€λ³΄λ νλμ© νμμ±μ λκ»΄ μ΄λ»κ²λ μμνκ² λλ κ² κ°λ€..!