14. ์ฐธ์กฐ vs ๋ณต์‚ฌ ๐ŸŽญ

EEuglenaยท2023๋…„ 8์›” 10์ผ
0

JavaScript30

๋ชฉ๋ก ๋ณด๊ธฐ
15/27
post-thumbnail

๋ชฉํ‘œ

๊นŠ์€ ๋ณต์‚ฌ์™€ ์–•์€ ๋ณต์‚ฌ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์•Œ์•„๋ณด์ž.

์›์‹œ ํƒ€์ž…

๋ฌธ์ž์—ด, ์ˆ˜, ๋ถˆ๋ฆฌ์–ธ ์ž๋ฃŒํ˜•์€ ์›์‹œ ํƒ€์ž…์ด๋ผ๊ณ  ํ•˜์—ฌ ๊ฐ’์„ ๋ฐ”๋กœ ์ €์žฅํ•œ๋‹ค. ๋ณต์‚ฌํ•  ๋•Œ๋„ ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฌธ์ž์—ด ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ์ €์žฅํ–ˆ๋‹ค. ๊ทธ๋‹ค์Œ ํ•œ์ชฝ์„ ๋ณ€ํ™”์‹œํ‚ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

๋‘˜์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•œ์ชฝ์„ ๋ณ€ํ™”์‹œํ‚ค๋”๋ผ๋„ ๋‹ค๋ฅธ ์ชฝ์ด ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.

์ฐธ์กฐ ํƒ€์ž…

๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ์ฐธ์กฐ ํƒ€์ž…์ด๋‹ค. ๋ฐฐ์—ด, ๊ฐ์ฒด ๋“ฑ์€ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š๊ณ  ์‹คํ–‰ ๋‹จ๊ณ„์—์„œ ๋™์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ์ž๋ฃŒํ˜•์€ ํž™ ์˜์—ญ์— ์‹ค์ œ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์Šคํƒ ์˜์—ญ์—๋Š” ํž™ ์˜์—ญ์— ์ €์žฅ๋œ ์ฃผ์†Œ๋ฅผ ๋ณด๊ด€ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์‚ฌํ•  ๋•Œ ๊ฐ’์ด ๋ณต์‚ฌ๋˜์ง€ ์•Š๊ณ  ์ฃผ์†Œ๋งŒ ๋ณต์‚ฌ๋˜๋Š”๋ฐ, ์ด๋ฅผ ์–•์€ ๋ณต์‚ฌ๋ผ๊ณ  ํ•œ๋‹ค.

๋ฐฐ์—ด

4๊ฐœ์˜ ๋ฌธ์ž์—ด์„ ๋‹ด์€ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ๋ณต์‚ฌํ•˜์˜€๋‹ค. ์ด ๋‘˜์€ ์ฐธ์กฐ๋ฅผ ๋ณต์‚ฌํ•œ ๊ฒƒ์ด๋ผ์„œ ์‹ค์ œ๋กœ๋Š” ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค.

ํ•œ ๋ฐฐ์—ด์„ ๋ณ€ํ™”์‹œํ‚จ ๋‹ค์Œ ๋น„๊ตํ•ด ๋ณด๋ฉด ์ด๋ฅผ ํ™•์‹คํžˆ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋ถ„๋ช… roster์—๋งŒ Aiden์„ ์ถ”๊ฐ€ํ•˜์˜€๋Š”๋ฐ players์—๋„ Aiden์ด ์ถ”๊ฐ€๋˜์–ด ์žˆ๋‹ค. roster๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ๊ฐ’์„ ๋ณ€ํ™”์‹œํ‚จ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๊ฐ’์„ ๋™์ผํ•˜๊ฒŒ ๊ฐ€๋ฆฌํ‚ค๋Š” players๋„ ๋ณ€ํ•˜๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.

์ด๋ ‡๊ฒŒ ์ฐธ์กฐ ํƒ€์ž…์˜ ๊ฒฝ์šฐ ์–•์€ ๋ณต์‚ฌ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ์›ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์˜ ๋ณ€๊ฒฝ์ด๋‚˜ ๋ณด์•ˆ์ƒ์˜ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ์–•์€ ๋ณต์‚ฌ์™€๋Š” ๋ฐ˜๋Œ€๋กœ ์‹ค์ œ ๊ฐ’์„ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์„ ๊นŠ์€ ๋ณต์‚ฌ๋ผ๊ณ  ํ•œ๋‹ค.

์œ„์˜ ๋„ค ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋จผ์ € slice๋Š” ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•ด ์ƒˆ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊นŠ์€ ๋ณต์‚ฌ๊ฐ€ ์ด๋ฃจ์–ด์ง„๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ๋นˆ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ  ๋ณต์‚ฌํ•  ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋ง๋ถ™์ด๋Š” ๊ฒƒ์œผ๋กœ, ๊ฐ’์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊นŠ์€ ๋ณต์‚ฌ๊ฐ€ ๋œ๋‹ค. ์„ธ๋ฒˆ์งธ๋Š” ES6์—์„œ ์ถ”๊ฐ€๋œ ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งˆ์ง€๋ง‰์€ from ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ธฐ์กด ๊ฐ’์œผ๋กœ ์ƒˆ ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

์–ด๋–ค ๋ฐฉ์‹์ด๋“  ๋™์ผํ•˜๊ฒŒ ๊นŠ์€ ๋ณต์‚ฌ๊ฐ€ ์ด๋ฃจ์–ด์ ธ ํ•œ์ชฝ์„ ๋ณ€ํ™”์‹œํ‚ค๋”๋ผ๋„ ๋‹ค๋ฅธ์ชฝ์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.

๊ฐ์ฒด

๊ฐ์ฒด์˜ ๊ฒฝ์šฐ๋„ ๋ฐฐ์—ด๊ณผ ๋น„์Šทํ•˜๋‹ค. name๊ณผ age ์†์„ฑ์„ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋ณต์‚ฌํ•˜์˜€๋‹ค. ๊ฐ์ฒด๋„ ๋Œ€์ž… ์—ฐ์‚ฐ์ž๋กœ ๋ณต์‚ฌํ•˜๋ฉด ์–•์€ ๋ณต์‚ฌ๊ฐ€ ์ด๋ฃจ์–ด์ง„๋‹ค.

๋ณต์‚ฌํ•œ ๊ฐ์ฒด์˜ ๊ฐ’์„ ์ˆ˜์ •ํ–ˆ์ง€๋งŒ ์›๋ž˜ ๊ฐ์ฒด์˜ ๊ฐ’๊นŒ์ง€ ๋ฐ”๋€Œ์–ด๋ฒ„๋ ธ๋‹ค.

Array.from๊ณผ ๋น„์Šทํ•˜๊ฒŒ Object.assign์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นˆ ๊ฐ์ฒด์— ๊ฐ’์„ ๋ณต์‚ฌํ•ด ๋„ฃ๋Š” ๊ฒƒ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋•Œ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋“ , ์ด์ „ ๊ฐ’์„ ์ˆ˜์ •ํ•˜๋“  ์›๋ž˜ ๊ฐ์ฒด์—๋Š” ์ „ํ˜€ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.

ES6 ๋ฌธ๋ฒ•์—์„œ๋Š” ๋ฐฐ์—ด๊ณผ ๊ฐ™์ด ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค.

๊นŠ์ด

๋‹ค๋งŒ ์œ„์˜ ๋ฐฉ์‹๋“ค ๋ชจ๋‘ ๋ฌธ์ œ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜์ง€๋Š” ๋ชปํ•œ๋‹ค.

name, age, social์˜ ์†์„ฑ์„ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž๋กœ ๋ณต์‚ฌํ•˜์˜€๋‹ค.

์•ž์„  ์˜ˆ์‹œ์™€ ๊ฐ™์ด ๊นŠ์€ ๋ณต์‚ฌ๊ฐ€ ์ˆ˜ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์‚ฌํ•œ ๊ฐ์ฒด์˜ ๊ฐ’์„ ๋ฐ”๊ฟ”๋„ ์›๋ณธ์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ social ๊ฐ์ฒด์˜ ๊ฐ’์„ ๋ฐ”๊พผ๋‹ค๋ฉด ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅธ ์ผ์ด ์ผ์–ด๋‚œ๋‹ค.

๋ถ„๋ช…ํžˆ ๋ณต์‚ฌ๋ณธ์˜ ๊ฐ’๋งŒ ๋ฐ”๊พธ์—ˆ๋Š”๋ฐ ์›๋ณธ์˜ ๊ฐ’๋„ ๋ฐ”๋€Œ์–ด ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚œ ์ด์œ ๋Š” ๊ฐ์ฒด ์•ˆ์— ๊ฐ์ฒด๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฐ์ฒด๋ฅผ ๊นŠ์€ ๋ณต์‚ฌํ•  ๋•Œ ๊ฐ์ฒด ์•ˆ์— ์žˆ๋Š” ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ๋ณต์‚ฌํ•ด์˜จ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๊ฐ’์ด ์ฐธ์กฐ ํƒ€์ž…์ด๋ผ๋ฉด ์–•์€ ๋ณต์‚ฌ๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ฆ‰ ์ค‘์ฒฉ๋œ(nested) ๊ตฌ์กฐ์—์„œ ๊นŠ์€ ๋ณต์‚ฌ๊ฐ€ ์ œ๋Œ€๋กœ ์ด๋ค„์ง€์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

์ด๋ฅผ ๊ฐ„๋‹จํžˆ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด JSON์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ณด๋‹ค์‹œํ”ผ ๋ณต์‚ฌํ•œ ๊ฐ์ฒด์—์„œ ๊ฐ์ฒด๋ฅผ ๊ฐ’์œผ๋กœ ๊ฐ–๋Š” ์†์„ฑ์„ ์ˆ˜์ •ํ•˜์˜€์ง€๋งŒ ์›๋ณธ์˜ ๊ฐ’์—๋Š” ์˜ํ–ฅ์ด ์—†๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฐฉ์‹์ด ์„ฑ๋Šฅ ๋ฉด์—์„œ๋Š” ์ข‹์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์—ญ์‹œ ๊ฐ€์žฅ ํŽธ๋ฆฌํ•œ ๊ฑด Lodash ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ง€์›ํ•˜๋Š” cloneDeep์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค๋งŒ ์ด์ „ ๊ฐ•์˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊นŠ์€ ๋ณต์‚ฌ์™€ ์–•์€ ๋ณต์‚ฌ์˜ ๊ฐœ๋…์„ ์•Œ์ง€ ๋ชปํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธธ ์œ„ํ—˜์ด ๋งค์šฐ ํฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋…์„ ํ™•์‹คํžˆ ์•„๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ์ 

๊นŠ์€ ๋ณต์‚ฌ์™€ ์–•์€ ๋ณต์‚ฌ๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์—๋„ ํ”ํžˆ ์žˆ๋Š” ๊ฐœ๋…์ด์ง€๋งŒ JS์—์„œ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๋Š” ๋ฐ ์˜์˜๊ฐ€ ์žˆ์—ˆ๋‹ค. ๋‚ด๊ฐ€ JS๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ ์‹œ์ž‘ํ•œ ๊ฒƒ์ด ์ตœ๊ทผ์ด๋ผ์„œ ES6 ๋ฌธ๋ฒ•์„ ์ฃผ๋กœ ๋ฐฐ์›Œ ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋งŒ ์•Œ๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ตํž ์ˆ˜ ์žˆ์—ˆ๋‹ค.

Lodash ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ตฌ๊ธ€๋ง์„ ํ•˜๋ฉด์„œ ์–ผํ• ๋ณธ ๊ธฐ์–ต๋งŒ ์žˆ๊ณ  ์‹ค์ œ๋กœ ์จ๋ณธ ์ ์€ ์—†๋Š”๋ฐ, ์ด๋ก ์ ์ธ ๋ถ€๋ถ„์„ ๊ณต๋ถ€ํ•˜๋ฉด ํ• ์ˆ˜๋ก Lodash๊ฐ€ ํ•ด๋ฒ•์œผ๋กœ ์ œ์‹œ๋˜๋Š” ๊ฑธ ๋ณด์•„ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ด ๋งŽ์€ ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋ฆฌ๊ณ  MDN์€ ์‹ ์ด๋‹ค.

์†Œ์Šค ์ฝ”๋“œ

Visit Github Repository

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2023๋…„ 8์›” 10์ผ

์ข‹์€ ์ •๋ณด ์–ป์–ด๊ฐ‘๋‹ˆ๋‹ค, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ