๊ณ ์ฐจํจ์
์ ๊ด๋ จ๋ ์ผ๊ธ๊ฐ์ฒด
,์ฝ๋ฐฑํจ์
๊ทธ๋ฆฌ๊ณ ๋ฐฐ์ด ๋ฉ์๋ ์ค filter
, map
, reduce
๋ฑ์ ๋ํด ๋ฐฐ์ ๋ค.
์คํ์ ํ์ด ํ๋์ ํ๋ฉด์ ๋ฌธ์ ๋ฅผ ํ์๋ค.
Javascript ํจ์๋ฅผ ์ผ๊ธ ๊ฐ์ฒด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๊ฐ์ฒด์ ์ ์ฉ๊ฐ๋ฅํ ์ฐ์ฐ์ ๋ชจ๋ ์ง์ํ๋ ๊ฐ์ฒด๋ฅผ ๋งํ๋ค.
ํน์ง
- ๋ณ์์ ํ ๋นํ ์ ์๋ค.
- ๋ค๋ฅธ ํจ์์ ์ ๋ฌ์ธ์๋ก ์ ๋ฌ ๋ ์ ์๋ค.
- ๋ค๋ฅธ ํจ์์ ๊ฒฐ๊ณผ๋ก์ ๋ฆฌํด ๋ ์ ์๋ค.
- ํจ์๋ฅผ ๋ฐ์ดํฐ(string, number, boolean ๋ฑ) ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
์ ๋ฌ์ธ์๋ก ์ ๋ฌ๋๋ ํจ์
์ฝ๋ฐฑ ํจ์๋ฅผ ์ ๋ฌ ๋ฐ์ ๊ณ ์ฐจํจ์๋ ํจ์ ๋ด๋ถ์์ ์ฝ๋ฐฑ ํจ์๋ฅผ ํธ์ถํ ์ ์๋ค.
function sum(num){
return num + 2;
}
function sumNum(func, num){
return func(num);
}
let output = sumNum(sum, 4);
console.log(output) // 6
sumNum
= ๋ค๋ฅธ ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๋ ๊ณ ์ฐจ ํจ์sumNum
์ ์ฒซ๋ฒ์งธ ์ธ์ func
์ ํจ์๊ฐ ๋ค์ด์ฌ ๊ฒฝ์ฐ func(ํจ์)
๋, sumNum
์ ์ฝ๋ฐฑํจ์ ์ด๋ค.
sum
ํจ์ ===sumNum
์ ์ฝ๋ฐฑํจ์
function sum(num1){
return function(num2){
return num1 + num2;
}
}
const num = sum(3);
output = num(2);
console.log(output); // 5
sum
์ ๋ค๋ฅธ ํจ์๋ฅผ ๋ฆฌํดํ๋ ๊ณ ์ฐจ ํจ์sum
์ ์ธ์ ํ๋๋ฅผ ์
๋ ฅ ๋ฐ์ ํจ์(์ต๋ช
ํจ์)๋ฅผ ๋ฆฌํดsum
๊ณผ ๋ํ ๊ฐ์ ๋ฆฌํด ํ๋ค.
num
์ด ๋ฆฌํดํ๋ ํจ์๋ฅผ ๋ณ์์ ์ ์ฅํ ์ ์๋ค.
(Javascript
์์ ํจ์๋ ์ผ๊ธ ๊ฐ์ฒด)
map
,filter
๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ค.(์์ ๋ณต์ฌ)
true
๋ฅผ ๋ฆฌํดํ๋ ์์๋ค๋ง ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด ๋ฐํlet arr = [1,2,3,4]
arr.filter(function(el){
return el % 2 === 0
}) // [2, 4]
arr.filter(function(el){
return el % 2 === 1
})// [1, 3]
for
๋ฌธ๊ณผ ๋น์ทํ ๊ธฐ๋ฅ์ ํ๋ค.let arr = [1,2,3,4]
function sum(num){
return num + 2;
}
arr.map(sum)// [3,4,5,6]
index
๋ฅผ ๊ฐ์ ธ์จ๋ค.let arr = [1,2,3,4]
arr.map(function(el, idx){
return `${idx} : ${el}`
})
// (4) ['0 : 1', '1 : 2', '2 : 3', '3 : 4']
โ๏ธ ์ด๊ธฐ๊ฐ์ ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ
- ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๊ฐ
acc
,cur
์ ๋๋ฒ์งธ ์์๋ถํฐ ์์๋๋ค.
let arr = [1,2,3,4]
arr.reduce(function(acc, cur){
return acc + cur
}) //10
ac
c์ 1
์ด ๋ค์ด๊ฐ๋ค.cur
์ 2
๊ฐ ๋ค์ด๊ฐ๋ค. arr
๋ฐฐ์ด์ ๊ฐ์ ๋ชจ๋ ํฉ์น 10
์ด ๋ฐํ ๋๋ค.โ๏ธ ์ด๊ธฐ๊ฐ์ ์ค์ ํ ๊ฒฝ์ฐ
- ์ค์ ํ ๊ฐ์ด
acc
,cur
์ ์ฒซ๋ฒ์งธ ์์๋ถํฐ ์์๋๋ค.
let arr = [1,2,3,4]
arr.reduce(function(acc, cur){
return acc + cur
}, 5) // 15
acc
์ 5
์ด ๋ค์ด๊ฐ๋ค.cur
์ 1
๊ฐ ๋ค์ด๊ฐ๋ค. arr
๋ฐฐ์ด์ ๊ฐ์ ๋ชจ๋ ํฉ์น 15
์ด ๋ฐํ ๋๋ค.โ๏ธ ์กฐ๊ฑด๋ฌธ์ ์ด์ฉํด ์ํ๋ ๊ฐ๋ง ๋ฐํํ ์๋ ์๋ค.
์์ง Javascript์ ๊ธธ์ ๋ฉ์๋ค...
์ฌ๋ฌ ์ข
๋ฅ์ ๋ฉ์๋๋ค์ด ์ค์ํ๊ณ ๊ทธ ์ค ์์ฃผ ์ฌ์ฉํ๋ ๋ฉ์๋๋ ๊ธฐ์ตํ๋
๋๋จธ์ง ๋ฉ์๋๋ ๋ฉ๋ชจํด์ ํ์ํ ๋ ๋ง๋ค ํ์ธํด๋ ๊ด์ฐฎ์ ๊ฑฐ ๊ฐ๋ค.
์ด๋ฒ ํ์ดํ๋์ ํ์ด๋ถ๊ณผ์ ์์ค ์ฐจ์ด๊ฐ ๋ง์ด ๋์ง ์์์
ํด๋น ๋ฌธ์ ๋ฅผ ๊ณ ๋ฏผํ๊ณ ํ์ด๋ณด๋ ์๊ฐ์ด ๋๋ํ ์ฃผ์ด์ ธ ์ข์๋ค.
์์ฝ๊ฒ ์ ๋ถ ํ์ง ๋ชปํ์ง๋ง ์๊ฐ ๋ณด๋ค ๋ง์ด ํ์๋ค.
์ด๋ ๊ฒ ์๋์ง ํจ๊ณผ๋ฅผ ๋ด ์ด์ ๋ณด๋ค ์ค๋ ๋ ์ฑ์ฅํ ๊ธฐ๋ถ์ด์๋ค.