์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ๋ธ๋์น ์ญ์
- ๋ธ๋์น ์์ฑ
- ๋งํฌ๋ค์ด
- ์ฝ๋๋ธ๋ญ
- Git๋ช ๋ น์ด
- branch ํ์ธ
- branch ์์ฑ
- ์ฝ๋๋ธ๋ก
- ๋ธ๋์น ํ์ธ
- ![rejected]
- branch ์ญ์
- markdown
- Today
- Total
DevLog
TIL(20210707) - ๊ณ ์ฐจํจ์ ๋ณธ๋ฌธ
๐ Today
- ์ผ๊ธ ๊ฐ์ฒด์ ํน์ง ํ์ต
- ๊ณ ์ฐจํจ์ ๊ฐ๋ ํ์ต
- ๋ด์ฅ ๊ณ ์ฐจํจ์(filter, map, reduce)ํ์ต ๋ฐ
๋ด์ฅ ๊ณ ์ฐจํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด
๐ค Learned
First-class citizen : ์ผ๊ธ๊ฐ์ฒด - ํน๋ณํ ๋์ฐ๋ฅผ ๋ฐ๋ ํจ์
๋นํ๊ธฐ์๋ First class๊ฐ ์์ต๋๋ค. ์ด์ฝ๋ ธ๋ฏธ ํด๋์ค์๋ ํ์น์์๋ถํฐ ๊ธฐ๋ด์, ์ํ๋ฌผ์ด ๋์ค๋ ์์๊น์ง ํญ๊ณต์ฌ์ ๊ด๋ จ๋ ๋ชจ๋ ๋ถ๋ถ์์ ํํ์ด ๋ค๋ฆ ๋๋ค. First class ์ข์์ ๊ตฌ๋งคํ ์ฌ๋์ ๋น์ผ ๊ฐ๊ฒฉ์ ์น๋ฅด๊ณ , ํญ๊ณต์ฌ๋ก๋ถํฐ ํน๋ณํ ๋์ฐ๋ฅผ ๋ฐ์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์๋ ํน๋ณํ ๋์ฐ๋ฅผ ๋ฐ๋ ์ผ๊ธ ๊ฐ์ฒด(first-class citizen)๊ฐ ์์ต๋๋ค. ๋ํ์ ์ธ ์ผ๊ธ ๊ฐ์ฒด ์ค ํ๋๊ฐ ํจ์์ ๋๋ค. (์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋์จ ์์ ์ ๊ณ ๋ คํ์ ๋,) ์๋ฐ์คํฌ๋ฆฝํธ์์ ํจ์๋ ์๋์ ๊ฐ์ด ํน๋ณํ๊ฒ ์ทจ๊ธ๋ฉ๋๋ค.
- ๋ณ์์ ํ ๋น(assignment) ํ ์ ์๋ค.
- ๋ค๋ฅธ ํจ์์ ์ธ์(argument)๋ก ์ ๋ฌ๋ ์ ์๋ค.
- ๋ค๋ฅธ ํจ์์ ๊ฒฐ๊ณผ๋ก์ ๋ฆฌํด๋ ์ ์๋ค.
ํจ์๋ฅผ ๋ณ์์ ํ ๋นํ ์ ์๊ธฐ ๋๋ฌธ์, ํจ์๋ฅผ ๋ฐฐ์ด์ ์์๋ ๊ฐ์ฒด์ ์์ฑ๊ฐ์ผ๋ก ์ ์ฅํ ์ ์์ต๋๋ค. ์ด๋ ํจ์๋ฅผ ๋ฐ์ดํฐ(string
, number
, boolean
, array
, object
)๋ฅผ ๋ค๋ฃจ๋ฏ์ด ๋ค๋ฃฐ ์ ์๋ค๋ ๊ฑธ ์๋ฏธํฉ๋๋ค.
๋ณ์์ ํจ์๋ฅผ ํ ๋นํ๋ ๊ฒฝ์ฐ
/* * ์๋๋ ๋ณ์ square์ ํจ์๋ฅผ ํ ๋นํ๋ ํจ์ ํํ์์ ๋๋ค. * ์๋ฐ์คํฌ๋ฆฝํธ์์ ํจ์๋ ์ผ๊ธ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ๋ณ์์ ์ ์ฅํ ์ ์์ต๋๋ค. * * ํจ์ ํํ์์ ํ ๋น ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. * square(7); // --> ReferenceError: Can't find variable: square */ const square = function (num) { return num * num; }; // square์๋ ํจ์๊ฐ ์ ์ฅ๋์ด ์์ผ๋ฏ๋ก (์ผ๊ธ ๊ฐ์ฒด), ํจ์ ํธ์ถ ์ฐ์ฐ์ '()'๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. output = square(7); console.log(output); // --> 49
[์ฝ๋] ํจ์ ํํ์์ ๋ณ์์ ํ ๋นํ ๋ค์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฌ๋ฌ๋ถ์ ์ด๋ฏธ ํจ์๋ฅผ ๋ณ์์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ(ํจ์ ํํ์)์ ํ์ตํ์ต๋๋ค. ์์ ํจ์ ํํ์(function expression)์ ํจ์ ์ ์ธ์(function declaration)๊ณผ ๋ค๋ฅด๊ฒ ํธ์ด์คํ (Hoisting)์ด ์ ์ฉ๋์ง ์์ต๋๋ค.
- ํธ์ด์คํ ์ ์ ์ธ๋ ์์น์ ๊ด๊ณ์์ด ์ด๋์๋ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
- ์ฝ๋๊ฐ ์คํ๋๋ ๊ณผ์ ์์ ํจ์ ์ ์ธ๋ถ๋ฅผ ์ฝ๋์ ์ต์๋จ์ผ๋ก ๋์ด์ฌ๋ฆฌ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํฉ๋๋ค.
ํจ์ ์ ์ธ์์ ํธ์ด์คํ ์ ์ง๋์น๊ฒ ์์กดํ๋ฉด, ์ฝ๋์ ์ ์ง ๋ณด์๊ฐ ์ฝ์ง ์์ต๋๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ๋ ๋๋ฒ๊น ์ ํ ๋, ์ฝ๋๋ฅผ ์์๋๋ก ์๋ค ๊ฐ๋ค ํ๊ฒ ๋ ์ ์์ต๋๋ค. ํจ์ ์ ์ธ์์ ์ด๋ ์์น์๋ ํจ์๋ฅผ ์ ์ธํ ์ ์๊ณ , ํจ์์ ์คํ ์์น๋ ์ค์ํ์ง ์์ต๋๋ค. ๋ฐ๋ฉด์ ํจ์ ํํ์์ ํจ์์ ํ ๋น๊ณผ ์คํ์ ์์น์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์, ์ฝ๋์ ์์น๋ฅผ ์ด๋ ์ ๋ ์์ธกํ ์ ์์ต๋๋ค. ํธ์ด์คํ ์ ์ ์ธํ๋ฉด, ํจ์ ์ ์ธ์๊ณผ ํจ์ ํํ์์ ํฌ๊ฒ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ๋ค๋ง, ํจ์ ํํ์์ ๊ฒฝ์ฐ๋ ํจ์๊ฐ ๋ณ์์ ์ ์ฅ๋ ์ ์๋ค๋ ์ฌ์ค์ ๋ณด๋ค ๋ถ๋ช ํ๊ฒ ๋ณด์ฌ ์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ ํจ์๋ ๋ณ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ธ์๋ก ๋ฐ๊ฑฐ๋, ๋ฆฌํด ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ํจ์๋ ๋ณ์์ ์ ์ฅ๋ ์ ์๊ธฐ ๋๋ฌธ์ ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๊ฑฐ๋, ๋ฆฌํด ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด์ด์ง๋ ์ฝํ ์ธ ๋ฅผ ํตํด ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ณ ๊ธ ์ฃผ์ , ๊ณ ์ฐจ ํจ์(higher order function)๋ฅผ ํ์ตํฉ๋๋ค.
๊ณ ์ฐจ ํจ์๋
๊ณ ์ฐจ ํจ์(higher order function)๋ ํจ์๋ฅผ ์ธ์(argument)๋ก ๋ฐ์ ์ ์๊ณ , ํจ์์ ํํ๋ก ๋ฆฌํดํ ์ ์๋ ํจ์์ ๋๋ค. ์ด์ ์ฝํ ์ธ ์์ ํ์ธํ๋ฏ์ด, ํจ์๋ ๋ณ์์ ์ ์ฅํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํจ์๋, ํจ์๋ฅผ ๋ด์ ๋ณ์๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ํจ์ ๋ด๋ถ์์ ๋ณ์์ ํจ์๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํจ์๋ ์ด ๋ณ์๋ฅผ ๋ฆฌํดํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ณ์์ ํ ๋นํ์ง ์๊ณ ํจ์๋ฅผ ๋ฐ๋ก ์ด์ฉํ ์ ์์ต๋๋ค. ์ด๋ค ๊ณ ์ฐจ ํจ์์ ํจ์๋ฅผ ์ธ์๋ก ์ ๋ฌํ๊ณ , ๊ณ ์ฐจ ํจ์๋ ํจ์ ์์ฒด๋ฅผ ๋ฆฌํดํฉ๋๋ค. ๋ณ์๊ฐ ๋น ์ก์ ๋ฟ, ๋์ผํ๊ฒ ๋์ํฉ๋๋ค.
์ด๋ ๋ค๋ฅธ ํจ์(caller
)์ ์ธ์(argument)๋ก ์ ๋ฌ๋๋ ํจ์๋ฅผ ์ฝ๋ฐฑ ํจ์(callback function)๋ผ๊ณ ํฉ๋๋ค. ์ฝ๋ฐฑ ํจ์์ ์ด๋ฆ์, ์ด๋ค ์์
์ด ์๋ฃ๋์์ ๋ ํธ์ถํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์, ๋ต์ ์ ํ๋ฅผ ๋ปํ๋ ์ฝ๋ฐฑ์ด๋ผ๋ ์ด๋ฆ์ด ๋ถ์ฌ์ก์ต๋๋ค.
์ฝ๋ฐฑ ํจ์๋ฅผ ์ ๋ฌ๋ฐ์ ๊ณ ์ฐจ ํจ์๋, ํจ์ ๋ด๋ถ์์ ์ด ์ฝ๋ฐฑ ํจ์๋ฅผ ํธ์ถ(invoke) ํ ์ ์์ต๋๋ค. caller
๋ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฝ๋ฐฑ ํจ์์ ์คํ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ์์ ํธ์ถํ์ง ์์ ์๋ ์๊ณ , ์ฌ๋ฌ ๋ฒ ์คํํ ์๋ ์์ต๋๋ค. ํน์ ์์
์ ์๋ฃ ํ์ ํธ์ถํ๋ ๊ฒฝ์ฐ๋ ์ดํ์ ์ถฉ๋ถํ ์ ํ ์ ์์ต๋๋ค.
'ํจ์๋ฅผ ๋ฆฌํดํ๋ ํจ์'๋ ๋ชจ์์๊ฐ ํน์ดํ ๋งํผ, ๋ถ๋ฅด๋ ์ฉ์ด๊ฐ ๋ฐ๋ก ์์ต๋๋ค. 'ํจ์๋ฅผ ๋ฆฌํดํ๋ ํจ์'๋ฅผ ๊ณ ์ํด ๋ธ ๋ ผ๋ฆฌํ์ ํ์ค์ผ ์ปค๋ฆฌ(Haskell Curry)์ ์ด๋ฆ์ ๋ฐ, ์ปค๋ฆฌ ํจ์๋ผ๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์ปค๋ฆฌ ํจ์๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋, ๊ณ ์ฐจ ํจ์๋ ์ฉ์ด๋ฅผ 'ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๋ ํจ์'์๋ง ํ์ ํด ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ํํ๊ฒ ๊ตฌ๋ถํ์๋ฉด, ๊ณ ์ฐจ ํจ์๊ฐ ์ปค๋ฆฌ ํจ์๋ฅผ ํฌํจํฉ๋๋ค. ์ด๋ฒ ์ ๋๋ถํฐ๋ 'ํจ์๋ฅผ ๋ฆฌํดํ๋ ํจ์'์ 'ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๋ ํจ์' ๋ชจ๋, ์ฉ์ด๋ฅผ ๊ณ ์ฐจ ํจ์๋ก ์ฌ์ฉํฉ๋๋ค.
๋ค๋ฅธ ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๋ ๊ฒฝ์ฐ
function double(num) { return num * 2; } function doubleNum(func, num) { return func(num); } /* * ํจ์ doubleNum์ ๋ค๋ฅธ ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๋ ๊ณ ์ฐจ ํจ์์ ๋๋ค. * ํจ์ doubleNum์ ์ฒซ ๋ฒ์งธ ์ธ์ func์ ํจ์๊ฐ ๋ค์ด์ฌ ๊ฒฝ์ฐ * ํจ์ func๋ ํจ์ doubleNum์ ์ฝ๋ฐฑ ํจ์์ ๋๋ค. * ์๋์ ๊ฐ์ ๊ฒฝ์ฐ, ํจ์ double์ ํจ์ doubleNum์ ์ฝ๋ฐฑ ํจ์์ ๋๋ค. */ let output = doubleNum(double, 4); console.log(output); // -> 8
ํจ์๋ฅผ ๋ฆฌํดํ๋ ๊ฒฝ์ฐ
function adder(added) { return function (num) { return num + added; }; } /* * ํจ์ adder๋ ๋ค๋ฅธ ํจ์๋ฅผ ๋ฆฌํดํ๋ ๊ณ ์ฐจ ํจ์์ ๋๋ค. * adder๋ ์ธ์ ํ ๊ฐ๋ฅผ ์ ๋ ฅ๋ฐ์์ ํจ์(์ต๋ช ํจ์)๋ฅผ ๋ฆฌํดํฉ๋๋ค. * ๋ฆฌํด๋๋ ์ต๋ช ํจ์๋ ์ธ์ ํ ๊ฐ๋ฅผ ๋ฐ์์ added์ ๋ํ ๊ฐ์ ๋ฆฌํดํฉ๋๋ค. */ // adder(5)๋ ํจ์์ด๋ฏ๋ก ํจ์ ํธ์ถ ์ฐ์ฐ์ '()'๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. let output = adder(5)(3); // -> 8 console.log(output); // -> 8 // adder๊ฐ ๋ฆฌํดํ๋ ํจ์๋ฅผ ๋ณ์์ ์ ์ฅํ ์ ์์ต๋๋ค. // javascript์์ ํจ์๋ ์ผ๊ธ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. const add3 = adder(3); output = add3(2); console.log(output); // -> 5
ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๊ณ , ํจ์๋ฅผ ๋ฆฌํดํ๋ ๊ฒฝ์ฐ
function double(num) { return num * 2; } function doubleAdder(added, func) { const doubled = func(added); return function (num) { return num + doubled; }; } /* * ํจ์ doubleAdder๋ ๊ณ ์ฐจ ํจ์์ ๋๋ค. * ํจ์ doubleAdder์ ์ธ์ func๋ ํจ์ doubleAdder์ ์ฝ๋ฐฑ ํจ์์ ๋๋ค. * ํจ์ double์ ํจ์ doubleAdder์ ์ฝ๋ฐฑ์ผ๋ก ์ ๋ฌ๋์์ต๋๋ค. */ // doubleAdder(5, double)๋ ํจ์์ด๋ฏ๋ก ํจ์ ํธ์ถ ๊ธฐํธ '()'๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. doubleAdder(5, double)(3); // -> 13 // doubleAdder๊ฐ ๋ฆฌํดํ๋ ํจ์๋ฅผ ๋ณ์์ ์ ์ฅํ ์ ์์ต๋๋ค. (์ผ๊ธ ๊ฐ์ฒด) const addTwice3 = doubleAdder(3, double); addTwice3(2); // --> 8
๋ด์ฅ ๊ณ ์ฐจํจ์(filter, map, reduce)
๋ฉ์๋(filter, map, reduce)๋ this
(์๋ณธ ๋ฐฐ์ด)๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค๐
1. Array.prototype.filter(callback: (element, index: number, array) => thisArg?: any) ;
- filter ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด if ๋ฌธ์ ๋์ฒดํ ์ ์๋ค.
- ๋ฐฐ์ด์ ์ํํ๋ฉฐ ๊ฐ ์์์ ๋ํ์ฌ ์ธ์๋ก ์ฃผ์ด์ง ์ฝ๋ฐฑํจ์์ ์คํ ๊ฒฐ๊ณผ๊ฐ true์ธ ๋ฐฐ์ด ์์์ ๊ฐ๋ง์ ์ถ์ถํ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ค.
- ๋ฐฐ์ด์์ ํน์ ์ผ์ด์ค๋ง ํํฐ๋ง ์กฐ๊ฑด์ผ๋ก ์ถ์ถํ์ฌ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. ์ด๋ ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
- ์ฝ๋ฐฑ ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ๋ฐฐ์ด ์์์ ๊ฐ, ์์ ์ธ๋ฑ์ค, filter ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ฐฐ์ด, ์ฆ this๋ฅผ ์ ๋ฌ ๋ฐ์ ์ ์๋ค.
- IE 9 ์ด์์์ ์ ์ ๋์ํ๋ค.
const result = [1, 2, 3, 4, 5].filter(function (item, index, self) {
console.log(`[${index}] = ${item}`);
return item % 2; // ํ์๋ง์ ํํฐ๋งํ๋ค (1์ true๋ก ํ๊ฐ๋๋ค)
});
// [0] = 1
// [1] = 2
// [2] = 3
// [3] = 4
// [4] = 5
console.log(result); // [ 1, 3, 5 ]
2. Array.prototype.map(callback: (element, index: number, array) => thisArg?: any);
- ๋ฐฐ์ด์ ์ํํ๋ฉฐ ๊ฐ ์์์ ๋ํ์ฌ ์ธ์๋ก ์ฃผ์ด์ง ์ฝ๋ฐฑ ํจ์์ ๋ฐํ๊ฐ(๊ฒฐ๊ณผ๊ฐ)์ผ๋ก ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํ์ฌ ๋ฐํํ๋ค. ์ด๋ ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
- forEach ๋ฉ์๋๋ ๋ฐฐ์ด์ ์ํํ๋ฉฐ ์์ ๊ฐ์ ์ฐธ์กฐํ์ฌ ๋ฌด์ธ๊ฐ๋ฅผ ํ๊ธฐ ์ํ ํจ์์ด๋ฉฐ map ๋ฉ์๋๋ ๋ฐฐ์ด์ ์ํํ๋ฉฐ ์์ ๊ฐ์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋งตํํ๊ธฐ ์ํ ํจ์์ด๋ค.
Array.prototype.map
- ์ฝ๋ฐฑ ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ๋ฐฐ์ด ์์์ ๊ฐ, ์์ ์ธ๋ฑ์ค, map ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ฐฐ์ด, ์ฆ this๋ฅผ ์ ๋ฌ ๋ฐ์ ์ ์๋ค.
- IE 9 ์ด์์์ ์ ์ ๋์ํ๋ค.
const numbers = [1, 4, 9];
// ๋ฐฐ์ด์ ์ํํ๋ฉฐ ๊ฐ ์์์ ๋ํ์ฌ ์ธ์๋ก ์ฃผ์ด์ง ์ฝ๋ฐฑํจ์๋ฅผ ์คํ
const roots = numbers.map(function (item) {
// ๋ฐํ๊ฐ์ด ์๋ก์ด ๋ฐฐ์ด์ ์์๊ฐ ๋๋ค. ๋ฐํ๊ฐ์ด ์์ผ๋ฉด ์๋ก์ด ๋ฐฐ์ด์ ๋น์ด ์๋ค.
return Math.sqrt(item);
});
// ์ ์ฝ๋์ ์ถ์ฝํํ์ ์๋์ ๊ฐ๋ค.
// const roots = numbers.map(Math.sqrt);
// map ๋ฉ์๋๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ค
console.log(roots); // [ 1, 2, 3 ]
// map ๋ฉ์๋๋ ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝํ์ง ์๋๋ค
console.log(numbers); // [ 1, 4, 9 ]
3. Array.prototype.reduce(callback: (accumulator, currentValue, index: number, array) => accumulator + currentValue);
๋ฐฐ์ด์ ์ํํ๋ฉฐ ๊ฐ ์์์ ๋ํ์ฌ ์ด์ ์ ์ฝ๋ฐฑํจ์ ์คํ ๋ฐํ๊ฐ์ ์ ๋ฌํ์ฌ ์ฝ๋ฐฑํจ์๋ฅผ ์คํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค. IE 9 ์ด์์์ ์ ์ ๋์ํ๋ค.
const arr = [1, 2, 3, 4, 5];
/*
previousValue: ์ด์ ์ฝ๋ฐฑ์ ๋ฐํ๊ฐ
currentValue : ๋ฐฐ์ด ์์์ ๊ฐ
currentIndex : ์ธ๋ฑ์ค
array : ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ฐฐ์ด, ์ฆ this
*/
// ํฉ์ฐ
const sum = arr.reduce(function (previousValue, currentValue, currentIndex, self) {
console.log(previousValue + '+' + currentValue + '=' + (previousValue + currentValue));
return previousValue + currentValue; // ๊ฒฐ๊ณผ๋ ๋ค์ ์ฝ๋ฐฑ์ ์ฒซ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌ๋๋ค
});
console.log(sum); // 15: 1~5๊น์ง์ ํฉ
/*
1: 1+2=3
2: 3+3=6
3: 6+4=10
4: 10+5=15
15
*/
// ์ต๋๊ฐ ์ทจ๋
const max = arr.reduce(function (pre, cur) {
return pre > cur ? pre : cur;
});
console.log(max); // 5: ์ต๋๊ฐ
๐ Tomorrow
- ๊ณ ์ฐจํจ์ ๋ณต์ต
- ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด
'๐ค TIL(Today I Learned)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
TIL(20210715) - HA1 ๋ (0) | 2021.07.15 |
---|---|
TIL(20210708) - JSX๊ท์น (0) | 2021.07.08 |
TIL(20210706) - onclick / addEventListener (0) | 2021.07.06 |
TIL(20210705) - DOM (0) | 2021.07.06 |
TIL(20210703) (0) | 2021.07.03 |