μΌκΈκ°μ²΄λ μμ±, λμ , μ°μ°, μΈμ λλ λ°ν κ°μΌλ‘μμ μ λ¬ λ± νλ‘κ·Έλλ° μΈμ΄μ κΈ°λ³Έμ μ‘°μμ μ νμμ΄ μ¬μ©ν μ μλ λμμ΄λ©° λνμ μΌλ‘ ν¨μκ° μλ€.
λ³μμ ν λΉ ν μ μκΈ°μ ν¨μλ₯Ό λ°°μ΄μ μμλ κ°μ²΄μ μμ± κ°μΌλ‘ μ μ₯ν μ μλ€.
μ΄ λ§μΈμ¦μ¨, ν¨μλ₯Ό μλ£ν λ€λ£¨λ― λ€λ£° μ μλ€λ μλ―Έμ΄λ€.
μ΄λ ν¨μ ννμμμ λ³΄λ€ μ§κ΄μ μΌλ‘ νμΈ ν μ μλ€.
ν¨μλ₯Ό μΈμλ‘ λ°μ μ μκ³ ν¨μ ννλ‘ λ°ν ν μ μλ ν¨μμ΄λ€.
μ΄ λ μ΄λ€ ν¨μ(caller
)μ μΈμλ‘ μ λ¬λλ ν¨μλ₯Ό callback
ν¨μλΌκ³ νλ€.
(μ¬κΈ°μ μ½λ°±μ μ΄λ€ μμ
μ΄ λλ¬μλ νΈμΆνλ κ²½μ°κ° λ§μμ μ½λ°±μ΄λΌ μ΄λ¦ λΆνμ‘λ€.)
μ΄ κ³ μ°¨ν¨μμμ ν¨μλ₯Ό 리ν΄νλ ν¨μλ€μ Currying Functionμ΄λΌκ³ νλ€.
ν΄λ‘μ ν¨μλ μ΄νμ νκ²½μ κΈ°μ΅ν΄ μ μμμ μ κ·Όνμ§ λͺ»νλ, ν¨μ μμ λ³μμ μ κ·Όν μ μλ ν¨μ μμ ν¨μλ₯Ό λ»νλ€.
컀λ§(Currying) κ°μ κ²½μ°λ func(a,b,c)
μ κ°μ΄ μΈμ μ¬λ¬ κ°λ₯Ό λ°λ νλμ ν¨μλ₯Ό func(a)(b)(c)
μ κ°μ΄ μΈμλ₯Ό νλμ© λ°λ μ¬λ¬κ°μ ν¨μλ‘ λ§λλ κΈ°μ μ΄κ³ μ΄μ κ°μ ν¨μλ₯Ό μ»€λ§ ν¨μλΌκ³ νλ€.
μ΄ μ»€λ§ ν¨μλ₯Ό μ°λ μ΄μ κ° ν΄λ‘μ ν¨μμ²λΌ μ°κΈ° μν¨μΈλ°, func(a,b,c)
μμ μΈμa
λ§ κ³ μ νκ³ λλ¨Έμ§ λ ν¨μμ μΈμλ§ λ³μλ‘ λκ³ μΆμλ, let funcA = func(a)
μ²λΌ μΈλΆ ν¨μλ₯Ό λ³μμ ν λΉν΄μ μΈμλ₯Ό κ³ μ νκ³ μ΄ λ€μ μΈμλ₯Ό κ·Έλλ‘ λΆνμ(funcA(b)(c)
)μ¬μ©ν μ μλ€.
νμ ν filter
, map
, reduce
λ©μλλ€μ΄ κ³ μ°¨ν¨μμΈ μ΄μ λ μΈμλ₯Ό κ±Έλ¬λ΄κΈ° μν 쑰건μ λͺ
μν ν¨μλ‘ λ°κΈ° λλ¬Έμ΄λ€.
μ¬μ€ μ΄κ±΄ μ΄μ μ λ°°μ΄ λ©μλ μ 리νλ©΄μ μ΄κ²λ€μ΄ κ³ μ°¨ν¨μμΈμ§ λͺ¨λ₯΄κ³ μ 리νλ μ μ΄ μλ€.
κ·Έλλ κ·Έλ κ²ν₯κΈ°λ μλκ³ κ·Έλ₯ νλ² μ± λ³΄λ μμ€μΌλ‘ μ 리νλκ±°λΌ λ€μ νλ² μ 리νκ² λ€.
filter
λ©μλλ μΈμμ 쑰건μ λ§μ‘±νλ μμλ₯Ό κ±Έλ¬λ΄ μ λ°°μ΄μ λ°ννλ λ©μλμ΄λ€.
filter
λ©μλμ νλ‘μΈμ€λ
λ°°μ΄μ μμλ₯Ό μΈμμ μ½λ°±ν¨μμ μ λ¬
μ½λ°± ν¨μλ μμλ₯Ό νλ¨ν΄ λΆλ¦¬μΈ νμ μΌλ‘ λ°ν
λ°ν κ°μ΄ μ°Έμ΄λ©΄ ν΄λΉ μμλ₯Ό μλ‘μ΄ λ°°μ΄μ μΆκ°, κ±°μ§μ΄λ©΄ 건λλ΄λ€.
μ΄ κ³Όμ μ κ° μμλ§λ€ μ μ©μν€κ³ μμλ₯Ό μΆκ°ν μλ‘μ΄ λ°°μ΄μ λ°ννλ€.
μ½λ°±ν¨μλ truthy κ°μ΄λ falsy κ°μ λ°ννκΈ°λ§ νλ©΄ λμ§λ§ 쑰건μ μ’ λ λͺ νν ν΄μ νμ€νκ² true λλ false λ‘ λ°ννκ² ν¨μλ₯Ό μ§λ κ²μ΄ μ’λ€.
const arr = [ {name: 'sunghoon', job: 'dev',}, {name: 'sangsu', job: 'postgrad'}, {name: 'sungsu', job: 'dev',}, let findDev = arr.filter(item => item.job === 'dev') console.log(findDev) // [ {name: 'sunghoon', job: 'dev',}, {name: 'sungsu', job: 'dev',} ]
μμ λ μ¬ν
map
λ©μλλ λͺ¨λ μμλ₯Ό μΈμμ μ μ©μμΌ λ°νλ κ°μΌλ‘ νλ μ λ°°μ΄μ λ°ννλ λ©μλμ΄λ€.
map
λ©μλμ νλ‘μΈμ€λ
const arr = [1, 2, 3]; let double = arr.map(item => item * 2); console.log(double); // [2, 4, 6]
reduce
λ©μλλ λͺ¨λ μμλ₯Ό νΉμ λ°©λ²μ λ°λΌ λμ κ°μ λμ μν€κ³ λμ κ°μ λ°ννλ λ©μλμ΄λ€.
μ‘°κΈ μ½κ² μκ°ν΄λ³΄λ©΄ reduce
λ©μλλ λμ κ°μ μ
λ°μ΄νΈνκ³ λμ κ°μ 리ν΄νλ λ©μλμ΄λ€.
reduce
λ©μλμ νλ‘μΈμ€λ
reduce
λ©μλλ μΈλ²μ§Έλ‘ μΈμλ₯Ό μ§μ ν μ μλλ° μ«μμ΄λ λ£μ μ μκ³ λ¬Έμμ΄λ λ£μ μ μμΌλ©° κ°μ²΄, λ°°μ΄λ λ£μ μ μλ€.
let arr = [1, 2, 3]; let sumArr = arr.reduce((acc, cur) => acc + cur, 0); console.log(sumArr); // 6;
κ³ μ°¨ν¨μ λ©μλλ€μ μ΅νλ€.
μ½νλ¦Ώ νλ©° μλ ¨μν€λ μ€ μΈλ° μΉν΄μ§ μ μμ κ² κ°λ€.
μ€λ κ°μ΄ νμ΄ νλ‘κ·Έλλ°νλ νμ΄λμ΄λ μλκΈμΌλ‘ μ¬λ°κ² νλ€ κ·Έλλ΄μΌ 9λ²μ§Έ
μ¬μ€ κ³ μ°¨ν¨μ μμ΅ν μκ°λ μ‘°κΈ λΆμ‘±νκ³ μ λͺ μ΄ λ§μ΄ λ€λ €μμ λ§μ΄ μ«μλλ°, λ무 μ«μμ κ·Έλ°κ° μκ°λ³΄λ€ ν λ§νλ€ π
μ‘°κΈ λ μΉν΄μ§ μ μμ κ² κ°μλ° μ€λ μ΄κ±° μ 리νκ³ λμ κ³ μ°¨ν¨μλ μ’ λ μΉν΄μ§κΈ° 보λ€λ μ°μ 리μ‘νΈλ μΈμ¬νκ³ μ£Όλ§μ μΉν΄μ§λ μκ°μ κ°μ Έλ΄μΌκ² λ€.