# * Learning JavaScript - ๋ฐฐ์ด 2ํธ
์ด ํฌ์คํ ์ Learning JavaScript์ 8์ฅ(๋ฐฐ์ด๊ณผ ๋ฐฐ์ด ์ฒ๋ฆฌ)์ ์ฐธ๊ณ ํ์ฌ ์์ฑ ๋์๋ค.
# map
๊ณผ filter
map
๊ณผ filter
๋ ๋ฐฐ์ด ๋ฉ์๋ ์ค ๊ฐ์ฅ ์ ์ฉํ ๋ฉ์๋์ด๋ค. ์ด๋ค ๋ฉ์๋๋ก ํ ์ ์๋ ์ผ์ ์ ๋ง ๋ค์ํ๋ค.
map
์ ๋ฐฐ์ด ์์๋ฅผ ๋ณํํ๋ค. ๋ญ๋ ๊ฐ๋ฅํ๋ค.
์ซ์๊ฐ ๋ค์ด์๋ ๊ฐ์ฒด๊ฐ ์๋๋ฐ, ํ์ํ ๊ฑด ์ซ์๋ผ๋ฉด? ๊ฐ๋จํ๋ค. ํจ์๋ก ๊ตฌ์ฑ๋ ๋ฐฐ์ด์ด ์๋๋ฐ, ํ๋ผ๋ฏธ์ค(promise)๊ฐ ํ์ํ๋ค? ๊ฐ๋จํ๋ค.
์ผ์ ํ ํ์์ ๋ฐฐ์ด์ ๋ค๋ฅธ ํ์์ผ๋ก ๋ฐ๊ฟ์ผ ํ๋ค๋ฉด map
์ ์ฐ๋ฉด ๋๋ค. map
๊ณผ filter
๋ ๋ชจ๋ ์ฌ๋ณธ์ ๋ฐํํ๋ฉฐ ์๋ ๋ฐฐ์ด์ ๋ฐ๋์ง ์๋๋ค.
์์ ๋ฅผ ๋ณด์.
const cart = [
{
name: 'Widget',
price: 9.95,
},
{
name: 'Gadget',
price: 22.95,
}
];
const names = cart.map(x => x.name);
// ['Widget', 'Gadget']
const prices = cart.map(x => x.price);
// [9.95, 22.95]
const discountPrices = prices.map(x => x * 0.8);
// [7.96, 18.36]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
์ฝ๋ฐฑ ํจ์๋ ๊ฐ ์์์์ ํธ์ถ๋ ๋ ์์ ์์ฒด์ ์์ ์ธ๋ฑ์ค, ๋ฐฐ์ด ์ ์ฒด๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋๋ค(๋ฐฐ์ด ๋งค๊ฐ๋ณ์๋ ๊ทธ๋ค์ง ์ ์ฉํ์ง๋ ์๋ค).
๋ค์ ์์ ์๋ ๋ ๋ฐฐ์ด์ ์ํ๊ณผ ๊ฐ๊ฒฉ์ด ๋ฐ๋ก ์ ์ฅ๋์ด ์๋๋ฐ, ์ด ๋์ ๊ฐ์ฒด๋ก ๊ฒฐํฉํด ๋ณด์.
const items = ['Widget', 'Gadget'];
const prices = [9.95, 22.95];
const cart = items.map((x, i) => ({name: x, price: prices[i]}));
// cart: [{ name: 'Widget', price: 9.95 }, { name: 'Gadget', price: 22.95 }]
2
3
4
์ด ์์ ๋ ์กฐ๊ธ ๋ ๋ณต์กํ์ง๋ง, map
ํจ์์ ๊ฐ๋ฅ์ฑ์ ์ ํํํ๋ค. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ์์ ์์ฒด(x)๋ง ์ฌ์ฉํ์ง ์๊ณ ์ธ๋ฑ์ค(i)๋ ์ฌ์ฉํ๋ค.
์ธ๋ฑ์ค๋ฅผ ์ด ๊น๋ญ์ items
์ ์์์ prices
์ ์์๋ฅผ ์ธ๋ฑ์ค์ ๋ฐ๋ผ ๊ฒฐํฉํ๊ธฐ ์ํด์์ด๋ค. ์ฌ๊ธฐ์ map
์ ๋ค๋ฅธ ๋ฐฐ์ด์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ ๊ฐ์ฒด ๋ฐฐ์ด๋ก ๋ณํํ๋ค.
๊ฐ์ฒด๋ฅผ ๊ดํธ๋ก ๊ฐ์ผ ์ด์ ๋, ์ด๋ ๊ฒํ์ง ์์ผ๋ฉด ํ์ดํ ํ๊ธฐ๋ฒ์์ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ค๊ดํธ๋ฅผ ๋ธ๋ก์ผ๋ก ํ๋จํ๊ธฐ ๋๋ฌธ์ด๋ค.
filter
๋ ์ด๋ฆ์ด ์์ํ๋ฏ ๋ฐฐ์ด์์ ํ์ํ ๊ฒ๋ค๋ง ๋จ๊ธธ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ก๋ค. filter
๋ map
๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ๋ณธ์ ๋ฐํํ๋ฉฐ ์ ๋ฐฐ์ด์๋ ํ์ํ ์์๋ง ๋จ๋๋ค. ์ด๋ค ์์๋ฅผ ๋จ๊ธธ์ง๋ ๋ง์๋๋ก์ด๋ค.
์์ ๋ฅผ ๋ณด์.
// ์นด๋ ๋ฑ์ ๋ง๋ ๋ค.
const cards = [];
for (let suit of ['H', 'C', 'D', 'S'])
for (let value = 1; value <= 13; value += 1)
cards.push({ suit, value});
// value ๊ฐ 2์ธ ์นด๋
cards.filter(c => c.value === 2);
// [
// { suit: 'H', value: 2 },
// { suit: 'C', value: 2 },
// { suit: 'D', value: 2 },
// { suit: 'S', value: 2 },
// ]
// ์ฌ๊ธฐ์๋ถํฐ๋ ๋ฐํ๋ ๋ฐฐ์ด์ ๊ธธ์ด๋ง ์ ๋๋ค.
// ๋ค์ด์๋ชฌ๋
cards.filter(c => c.suit === 'D'); // length: 13
// ํน, ํธ, ์ฃผ๋์ด
cards.filter(c => c.value > 10); // length: 12
// ํํธ์ ํน, ํธ, ์ฃผ๋์ด
cards.filter(c => c.value > 10 && c.suit === 'H'); // length: 3
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
map
๊ณผ filter
๋ฅผ ๊ฒฐํฉํ๋ฉด ์ ๋ง ๋ค์ํ ์ผ์ ํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ์์์ ๋ง๋ ์นด๋ ๋ฑ์ ์งง์ ๋ฌธ์์ด๋ก ํํํ๊ณ ์ถ๋ค๊ณ ํ์.
์นด๋ ๊ทธ๋ฆผ(suit: ํํธ, ํด๋ก๋ฒ, ๋ค์ด์๋ชฌ๋, ์คํ์ด๋)์๋ ์ ๋์ฝ๋ ์ฝ๋ ํฌ์ธํธ๋ฅผ ์ฐ๊ณ ์์ด์ค์ ํน, ํธ, ์ฃผ๋์ด๋ ์ซ์ ๋์ ๊ฐ๊ฐ A, K, Q, J๋ฅผ ์ฐ๊ฒ ๋ค. ์ฌ๊ธฐ์ ํ์ํ ํจ์๋ ์กฐ๊ธ ๊ธธ์ด์ง๋ฏ๋ก ์ต๋ช
ํจ์๋ฅผ ์ฐ์ง ์๊ณ ๋ฐ๋ก ๋ง๋ ๋ค.
function cardToString(c) {
const suits = {
'H': '\u2665',
'C': '\u2663',
'D': '\u2666',
'S': '\u2660',
};
const values = {
1: 'A',
11: 'J',
12: 'Q',
13: 'K',
};
// cardToString์ ํธ์ถํ ๋๋ง๋ค ๋งค๋ฒ ๊ฐ์ ๋ง๋๋ ๊ฑด ๊ทธ๋ฆฌ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์๋๋ค.
// ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ฐ์ต๋ฌธ์ ๋ก ๋จ๊ธด๋ค.
for(let i = 2; i <=10; i += 1) values[i] = i;
return values[c.value] + suits[c.suit];
}
// ์นด๋ ๋ฑ์ ๋ง๋ ๋ค.
const cards = [];
for (let suit of ['H', 'C', 'D', 'S'])
for (let value = 1; value <= 13; value += 1)
cards.push({ suit, value });
// value๊ฐ 2์ธ ์นด๋
cards.filter(c => c.value === 2)
.map(cardToString); // ['2โฅ', '2โฃ', '2โฆ', '2โ '];
// ํํธ์ ํน, ํธ, ์ฃผ๋์ด
cards.filter(c => c.value > 10 && c.suit === 'H')
.map(cardToString); // ['Jโฅ', 'Qโฅ', 'Kโฅ'];
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
32
# ๋ฐฐ์ด์ ๋ง๋ฒ reduce
map
์ด ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ๋ณํํ๋ค๋ฉด reduce
๋ ๋ฐฐ์ด ์์ฒด ๋ฅผ ๋ณํํ๋ค. reduce
๋ผ๋ ์ด๋ฆ์ ์ด ๋ฉ์๋๊ฐ ๋ณดํต ๋ฐฐ์ด์ ๊ฐ ํ๋๋ก ์ค์ด๋ ๋ฐ ์ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ถ์๋ค.
์๋ฅผ ๋ค์ด ๋ฐฐ์ด์ ๋ค์ด์๋ ์ซ์๋ฅผ ๋ํ๊ฑฐ๋ ํ๊ท ์ ๊ตฌํ๋ ๊ฒ์ ๋ฐฐ์ด์ ๊ฐ ํ๋๋ก ์ค์ด๋ ๋์์ด๋ค. ํ์ง๋ง reduce
๊ฐ ๋ฐํํ๋ ๊ฐ ํ๋ ๋ ๊ฐ์ฒด์ผ ์๋ ์๊ณ , ๋ค๋ฅธ ๋ฐฐ์ด์ผ ์๋ ์๋ค.
์ฌ์ค reduce
๋ map
๊ณผ filter
๋ฅผ ๋น๋กฏํด ์ฌํ๊น์ง ์ค๋ช
ํ ๋ฐฐ์ด ๋ฉ์๋์ ๋์์ ๋๋ถ๋ถ ๋์ ํ ์ ์๋ค.
reduce
๋ map
์ด๋ filter
์ ๋ง์ฐฌ์ง๋ก ์ฝ๋ฐฑ ํจ์๋ฅผ ๋ฐ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฌํ๊น์ง ์ค๋ช
ํ ์ฝ๋ฐฑ์์ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ ํญ์ ํ์ฌ ๋ฐฐ์ด ์์์์ง๋ง, reduce
๋ ๋ค๋ฅด๋ค.
reduce
๊ฐ ๋ฐ๋ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ ๋ฐฐ์ด์ด ์ค์ด๋๋ ๋์์ธ ์ดํ๋ฎฌ๋ ์ดํฐ(accumulator) ์ด๋ค. ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ถํฐ๋ ์ฌํ๊น์ง ์ค๋ช
ํ ์ฝ๋ฐฑ์ ์์๋๋ก ํ์ฌ ๋ฐฐ์ด ์์, ํ์ฌ ์ธ๋ฑ์ค, ๋ฐฐ์ด ์์ฒด์ด๋ค.
reduce
๋ ์ด๊น๊ฐ๋ ์ต์
์ผ๋ก ๋ฐ์ ์ ์๋ค. ๋ฐฐ์ด์ ์ซ์๋ฅผ ๋ํ๋ ๋จ์ํ ์์ ๋ฅผ ๋ณด์.
const arr = [5, 7, 2, 4];
const sum = arr.reduce((a, x) => a += x, 0);
2
reduce
์ ์ฝ๋ฐฑ ํจ์๋ ๋งค๊ฐ๋ณ์๋ก ๋์ ๊ฐ a
์ ํ์ฌ ๋ฐฐ์ด ์์ x
๋ฅผ ๋ฐ์๋ค. ์ด ์์ ์์ ๋์ ๊ฐ์ 0
์ผ๋ก ์์ํ๋ค. reduce
์ ์ฒซ ์์ ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํ๋ ๋ฐฉ์๋๋ก ํ ๋จ๊ณ์ฉ ์งํํ๋ฉฐ ์ดํดํด ๋ณด๊ธฐ๋ก ํ์.
- ์ฒซ ๋ฒ์งธ ๋ฐฐ์ด ์์ 5์์ (์ต๋ช
) ํจ์๋ฅผ ํธ์ถํ๋ค.
a
์ ์ด๊น๊ฐ์0
์ด๊ณx
์ ๊ฐ์5
์ด๋ค. ํจ์๋a
์x(5)
์ ํฉ์ ๋ฐํํ๋ค. ์ด ๊ฐ์ ๋ค์ ๋จ๊ณ์์a
์ ๊ฐ์ด ๋๋ค. - ๋ ๋ฒ์งธ ๋ฐฐ์ด ์์
7
์์ ํจ์๋ฅผ ํธ์ถํ๋ค.a
์ ์ด๊น๊ฐ์ ์ด์ ๋จ๊ณ์์ ์ ๋ฌํ5
์ด๊ณ ,x
์ ๊ฐ์7
์ด๋ค. ํจ์๋a
์x
์ ํฉ12
๋ฅผ ๋ฐํํ๋ค. ์ด ๊ฐ์ ๋ค์ ๋จ๊ณ์์a
์ ๊ฐ์ด ๋๋ค. - ์ธ ๋ฒ์งธ ๋ฐฐ์ด ์์
2
์์ ํจ์๋ฅผ ํธ์ถํ๋ค. ์ด ๋จ๊ณ์์a
๋12
์ด๊ณx
๋2
์ด๋ค. ํ์๋a
์x
์ ํฉ์ธ14
๋ฅผ ๋ฐํํ๋ค. - ๋ค ๋ฒ์งธ์ด์ ๋ง์ง๋ง ๋ฐฐ์ด ์์์ธ
4
์์ ํจ์๋ฅผ ํธ์ถํ๋ค.a
๋14
์ด๊ณx
๋4
์ด๋ค. ํจ์๋a
์x
์ ํฉ์ธ18
์ ๋ฐํํ๋ฉฐ ์ด ๊ฐ์reduce
์ ๊ฐ์ด๊ณsum
์ ํ ๋น๋๋ ๊ฐ์ด๋ค.
์๋ฏผํ ์ฌ๋์ด๋ผ๋ฉด a
์ ๊ฐ์ ํ ๋นํ ํ์๋ ์๋ค๋ ๊ฒ์ ๋์น์ฑ์ ๊ฒ์ด๋ค. ํ์ดํ ํจ์์์ ๋ช
์์ ์ธ return
๋ฌธ์ด ํ์ํ์ง ์์๋ ๊ฒ์ฒ๋ผ, ํจ์์์ ์ค์ฉํ ๊ฑด ๋ฌด์์ ๋ฐํํ๋๊ฐ ์ด๋ฏ๋ก ๊ทธ๋ฅ a + x
๋ฅผ ๋ฐํํด๋ ๋์ ๊ฒ์ด๋ค.
ํ์ง๋ง reduce
๋ฅผ ๋ ์ ํ์ฉํ๋ ค๋ฉด ๋์ ๊ฐ์ด ์ด๋ป๊ฒ ๋ณํ๋์ง ์๊ฐํ๋ ์ต๊ด์ ๊ธฐ๋ฅด๋ ๊ฒ ์ข๋ค.
๋ ํฅ๋ฏธ๋ก์ด ์์ ๋ฅผ ๋ณด๊ธฐ ์ ์, ๋์ ๊ฐ์ด undefined
๋ก ์์ํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ์ง ์๊ฐํด ๋ณด์. ๋์ ๊ฐ์ด ์ ๊ณต๋์ง ์์ผ๋ฉด reduece
๋ ์ฒซ ๋ฒ์งธ ๋ฐฐ์ด ์์๋ฅผ ์ด๊น๊ฐ์ผ๋ก ๋ณด๊ณ ๋ ๋ฒ์งธ ์์์์๋ถํฐ ํจ์๋ฅผ ํธ์ถํ๋ค.
์ ์์ ์์ ์ด๊น๊ฐ์ ์๋ตํ๊ณ ๋ค์ ์๊ฐํด ๋ณด์.
const arr = [5, 7, 2, 4];
const sum = arr.reduce((a, x) => a += x);
2
- ๋ ๋ฒ์งธ ๋ฐฐ์ด ์์
7
์์ ํจ์๊ฐ ํธ์ถ๋๋ค.a
์ ์ด๊น๊ฐ์ ์ฒซ ๋ฒ์งธ ๋ฐฐ์ด ์์์ธ5
์ด๊ณx
์ ๊ฐ์7
์ด๋ค. ํจ์๋a
์x
์ด ํฉ์ธ12
๋ฅผ ๋ฐํํ๊ณ ์ด๊ฐ์ด ๋ค์ ๋จ๊ณ์์a
์ ๊ฐ์ด๋ค. - ์ธ ๋ฒ์งธ ๋ฐฐ์ด ์์
2
์์ ํจ์๋ฅผ ํธ์ถํ๋ค.a
์ ์ด๊น๊ฐ์12
์ด๊ณx
์ ๊ฐ์2
์ด๋ค. ํจ์๋a
์x
์ ํฉ์ธ14
๋ฅผ ๋ฐํํ๋ค. - ๋ค ๋ฒ์งธ์ด์ ๋ง์ง๋ง ๋ฐฐ์ด ์์์ธ
4
์์ ํจ์๋ฅผ ํธ์ถํ๋ค.a
๋14
์ด๊ณx
๋4
์ด๋ค. ํจ์๋a
์x
์ ํฉ์ธ18
์ ๋ฐํํ๋ฉฐ ์ด ๊ฐ์reduce
์ ๊ฐ์ด๊ณsum
์ ํ ๋น๋๋ ๊ฐ์ด๋ค.
๋จ๊ณ๋ ํ๋ ์ค์์ง๋ง ๊ฒฐ๊ณผ๋ ๊ฐ๋ค. ์ด ์์ ๋ฅผ ํฌํจํด, ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๊ฐ ๊ทธ๋๋ก ์ด๊น๊ฐ์ด ๋ ์ ์์ ๋๋ ์ด๊น๊ฐ์ ์๋ตํด๋ ๋๋ค.
reduce
๋ ๋ณดํต ์ซ์๋ ๋ฌธ์์ด ๊ฐ์ ์์ ๊ฐ์ ๋์ ๊ฐ์ผ๋ก ์ฌ์ฉํ์ง๋ง, ๊ฐ์ฒด ๋ํ ๋์ ๊ฐ์ด ๋ ์ ์๊ณ ์ด๋ฅผ ํตํด ์์ฃผ ๋ค์ํ๊ฒ ํ์ฉํ ์ ์๋๋ฐ๋ ๊ฐ๊ณผํ๋ ์ฌ๋๋ค์ด ๋ง๋ค.
์๋ฅผ ๋ค์ด ์๋จ์ด๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ด ์๊ณ ๊ฐ ๋จ์ด๋ฅผ ์ฒซ ๊ธ์์ ๋ฐ๋ผ ๋ฌถ๋๋ค๊ณ ํ๋ฉด reduce
์ ํจ๊ป ๊ฐ์ฒด๋ฅผ ์ธ ์ ์๋ค.
const words = ['Beachball', 'Rodeo', 'Angel',
'Aardvark', 'Xylophone', 'November', 'Chocolater',
'Papaya', 'Uniform', 'Joker', 'Clover', 'Bali'];
const alphabetical = words.reduce((a, x) => {
if ( !a[x[0]]) a[x[0]] = [];
a[x[0]].push(x);
return a;
}, {});
2
3
4
5
6
7
8
์ด ์์ ๋ ์กฐ๊ธ ๋ ๋ณต์กํ์ง๋ง ์์น์ ๊ฐ๋ค. ๋ฐฐ์ด์ ๋ชจ๋ ์์์์ ์ฝ๋ฐฑ ํจ์๋ ์ ๋จ๊ณ์ ๊ฒฐ๊ณผ์ ์ด ๋จ์ด์ ์ฒซ ๋ฒ์งธ ๊ธ์์ธ ํ๋กํผํฐ๊ฐ ์๋์ง ํ์ธํ๋ค. ๊ทธ๋ฐ ํ๋กํผํฐ๊ฐ ์๋ค๋ฉด ๋น ๋ฐฐ์ด์ ์ถ๊ฐํ๋ค.
์ฆ 'Beachball'
์ ๋ง๋๋ฉด a.B
ํ๋กํผํฐ๋ฅผ ํ์ธํ๋ ๋ฐ ๊ทธ๋ฐ ํ๋กํผํฐ๋ ์์ผ๋ฏ๋ก ๋น ๋ฐฐ์ด์ ๋ง๋ ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋จ์ด๋ฅผ ์ ์ ํ ๋ฐฐ์ด์ ์ถ๊ฐํ๋ค. 'Beachball'
์ a.B
ํ๋กํผํฐ๊ฐ ์์์ผ๋ฏ๋ก ๋น ๋ฐฐ์ด์ ์ถ๊ฐ๊ณ , ๋ง์ง๋ง์ผ๋ก { B: [Beachball]}
์ธ a
๋ฅผ ๋ฐํํ๋ค.
reduce
๋ ํต๊ณ์๋ ์ฌ์ฉํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ ์
์ ํ๊ท (mean)๊ณผ ๋ถ์ฐ(variance)์ ๊ณ์ฐํ๋ค๊ณ ํด ๋ณด์.
const data = [3.3, 5, 7.2, 12, 4, 6, 10.3];
// ๋๋์ค ์ปค๋์ค(Donald Knuth)๊ฐ ๋ถ์ฐ ๊ณ์ฐ์ ์ํด ๋ง๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
const stats = data.reduce((a, x) => {
a.N += 1;
let delta = x - a.mean;
a.mean += delta / a.N;
a.M2 += delta * (x - a.mean);
return a;
}, { N: 0, mean: 0, M2: 0 });
if (stats.N > 2) {
stats.variance = stats.M2 / (stats.N - 1);
stats.stdev = Math.sqrt(stats.variance);
}
2
3
4
5
6
7
8
9
10
11
12
13
๋ณ์ ์ฌ๋ฌ ๊ฐ, ํนํ mean
๊ณผ M2
๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฏ๋ก ์ด๋ฒ์๋ ๊ฐ์ฒด๋ฅผ ๋์ ๊ฐ์ผ๋ก ์ผ๋ค. ์ํ๋ค๋ฉด N
๋์ ์ธ๋ฑ์ค์์ 1
์ ๋บ ๊ฐ์ ์จ๋ ๋๊ธด ํ๋ค.
reduce
์ ์ ์ฐ์ฑ์ ์์๋ณด๊ธฐ ์ํด ํ ๊ฐ์ง ์์ ๋ฅผ ๋ ์ดํด๋ณด๊ฒ ๋ค. ์์ ์์ฒด๋ ๋งค์ฐ ์กฐ์
ํ์ง๋ง, ์ด๋ฒ์๋ ๋ฌธ์์ด์ ๋์ ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ค.
const words = [
'Beachball',
'Rodeo',
'Angel',
'Aardvark',
'Xylophone',
'November',
'Chocolate',
'Papaya',
'Uniform',
'Joker',
'Clover',
'Bali',
];
const longWords = words.reduce((a, w) => w.length > 6 ? a + ' ' + w : a, '').trim();
// longWords: 'Beachball Aardvark Xylophone November Chocolate Uniform'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
์ด ์์ ๋ ๋ฌธ์์ด ๋์ ๊ฐ์ ์จ์ 6๊ธ์๊ฐ ๋๋ ๋จ์ด๋ฅผ ๋ชจ์ ๋ฌธ์์ด ํ๋๋ก ๋ง๋ค์๋ค. reduce
๋์ filter
์ join
์ ์จ์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค. reduce
๋ค์์ trim
์ ํธ์ถํ ์ด์ ๋ฅผ ๋จผ์ ์๊ฐํด ๋ณด์.