Map
Last updated
ES6๋ถํฐ ๋์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด์ธ ๋งต(Map)๊ณผ ์ (Set)์ ๊ธฐ์กด์ ์๋ฃ๊ตฌ์กฐ์ธ ๊ฐ์ฒด์ ๋ฐฐ์ด๊ณผ ๋น์ทํ์ง๋ง ์ฐจ์ด์ ์ด ๋ถ๋ช ์กด์ฌํฉ๋๋ค. ์ด๋ฒ ์ฑํฐ์์๋ ๊ฐ์ฒด์ ๋ฐฐ์ด๊ณผ ๋ค๋ฅธ ๋งต๊ณผ ์ ์ ํน์ง์ ์์๋ณด์.
Object์ ํค๋ String์ด๋ฉฐ, Map์ ๋ฌธ์์ด์ด ์๋ ๊ฐ๋ ํค๋ก ์ค์ ํ ์ ์๋ค.
Map์ ํฌ๊ธฐ๋ฅผ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค.
Map์ ์ถ๊ฐ๋ ์์๋๋ก ๋ฐ๋ณตํ๋ค.
๋งต์ ํค๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค๋ ์ ์์ ๊ฐ์ฒด์ ์ ์ฌํ์ง๋ง ๋งต์ ํค์ ๋ค์ํ ์๋ฃํ์ ํ์ฉํ๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์๋ค.
๋จผ์ ๋งต ๊ฐ์ฒด ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์.
๊ธฐ๋ณธ ์์ฑ ๋ฐฉ๋ฒ
๋ง์ฝ, ์ค๋ณต๋๋ ํค๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ ๋ง์ง๋ง ๊ฐ์ด ์ ์ฉ๋๋ค.
[ํค, ๊ฐ]์์ ๊ฐ์ ๊ฐ์ฒด๊ฐ ๋ ์ ์๋ค.
[ํค, ๊ฐ]์์ ํค๋ ๊ฐ์ฒด๊ฐ ๋ ์ ์์ง๋ง ๊ณ ์ ํ ๊ฐ์ด ๋ ์ ์๋ค.
๊ธฐ๋ณธ ์ฌ์ฉ ๋ฐฉ๋ฒ
์ฒด์ด๋ ๋ฐฉ๋ฒ
map.set
์ ํธ์ถํ ๋๋ง๋ค ๋งต ์์ ์ด ๋ฐํ๋๋ค. ์ด๋ฅผ ์ด์ฉํ์ฌ map.set
์ ์ฒด์ด๋(chaining)ํ ์ ์๋ค.
ํ๋ฒํ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ๋งต(Map)
์ ๋ง๋ค๊ณ ์ถ์ผ๋ฉด ๋ด์ฅ ๋ฉ์๋ Object.entries(obj)
๋ฅผ ํ์ฉํด์ผ ํ๋ค. ์ด ๋ฉ์๋๋ ๊ฐ์ฒด์ ํค-๊ฐ ์์ ์์([key, value]
)๋ก ๊ฐ์ง๋ ๋ฐฐ์ด์ ๋ฐํํ๋ค.
์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ ํ๋ฒํ ๊ฐ์ฒด๊ฐ ์๋ค.
์์ obj
๊ฐ์ฒด๋ฅผ Object.entries(obj)
์ ์ธ์๋ก ๋ฃ๊ฒ ๋๋ฉด ํค-๊ฐ ์์ ์์([key, value]
)๋ก ๊ฐ์ง๋ ๋ฐฐ์ด์ ๋ฐํํ๋ค. (์๋์ ์ฝ๋ ๋ฐ ์ฌ์ง ์ฐธ๊ณ )
entreis
์ ๊ฐ ์์๊ฐ [ํค, ๊ฐ] ์์ธ ๋ฐฐ์ด์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก new Map()
์ ์ ๋ฌํ์ฌ ์๋ก์ด ๋งต์ ๋ง๋ค ์ ์๋ค.
key
์ ํด๋นํ๋ ๊ฐ์ ๋ฐํํ๋ค. key
๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด undefined
๋ฅผ ๋ฐํํ๋ค.
map
์ ์ฌ์ฉํ ๋map
์ ์ฉ ๋ฉ์๋set
,get
๋ฑ์ ์ฌ์ฉํ์. ๊ธฐ์กด ๊ฐ์ฒด์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์map
์ ์ผ๋ฐ ๊ฐ์ฒด์ฒ๋ผ ์ทจ๊ธํ๊ฒ ๋์ด ์ฌ๋ฌ ์ ์ฝ์ด ์๊ธด๋ค.
key
๊ฐ ์กด์ฌํ๋ฉด true
, ์กด์ฌํ์ง ์์ผ๋ฉด false
๋ฅผ ๋ฐํํ๋ค.
key
์ ํด๋นํ๋ ๊ฐ์ ์ญ์ ํ๋ค.
๋งต ์์ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐํ๋ค.
์์์ ๊ฐ์๋ฅผ ๋ฐํํ๋ค.
๊ฐ ์์์ ํค๋ฅผ ๋ชจ์ ๋ฐ๋ณต ๊ฐ๋ฅํ(iterable, ์ดํฐ๋ฌ๋ธ) ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
๊ฐ ์์์ ๊ฐ์ ๋ชจ๋ ์ดํฐ๋ฌ๋ธ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
์์์ [ํค, ๊ฐ]
์ ํ ์์ผ๋ก ํ๋ ์ดํฐ๋ฌ๋ธ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค. ์ด ์ดํฐ๋ฌ๋ธ ๊ฐ์ฒด๋ for...of
๋ฐ๋ณต๋ฌธ์ ๊ธฐ์ด๋ก ์ฐ์ธ๋ค.
์๋๋ for...of
๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ [ํค, ๊ฐ] ์์ ๋์์ผ๋ก ์ํํ๋ ์ฝ๋์ด๋ค.
๋ ๋ฐ๋ณต๋ฌธ์ ๊ฒฐ๊ณผ๋ ๊ฐ๋ค.
๋งต์ ๋ฐฐ์ด๊ณผ ์ ์ฌํ๊ฒ ๋ด์ฅ ๋ฉ์๋
forEach
๋ ์ง์ํ๋ค.
๋งต์ ๊ฐ์ฒด๋ก ๋ฐ๊พธ๊ธฐ ์ํด์๋ Object.fromEntries
๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. ์ด ๋ฉ์๋๋ ๊ฐ ์์๊ฐ [ํค, ๊ฐ]
์์ธ ๋ฐฐ์ด์ ๊ฐ์ฒด๋ก ๋ฐ๊ฟ์ค๋ค.
ํ์ง๋ง ๊ตณ์ด map.entries()
๋ฅผ ํ์ง์๊ณ Object.fromEntries()
๋ฉ์๋์ ์ธ์๋ก ๋งต(Map)์ ์ ๋ฌํด๋ ๋๋ค.
Object.fromEntries
๋ ์ธ์๋ก ์ดํฐ๋ฌ๋ธ ๊ฐ์ฒด๋ฅผ ๋ฐ๊ธฐ ๋๋ฌธ์ ๊ผญ ๋ฐฐ์ด์ ์ ๋ฌํด์ค ํ์๋ ์๋ค.(๋งต๋ ์ดํฐ๋ฌ๋ธ ๊ฐ์ฒด์ด๋ค.)
์ฆ, ์๋์ ๊ฐ์ด ์์ ์ฝ๋๋ฅผ ์์ ํ ์ ์๋ค.
์๋
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive
์ฑ ์ ๋ณด๋ฉฐ ๊ณต๋ถํ๋ ์ ์ด ์๋ค. ๊ทธ ์ฑ ์ ๋์๋ ๋ด์ฉ ์ค ํ๋๊ฐ ๋ฐ๋ก ์ค๋ ๊ณต๋ถํ ๋งต(Map)์ ๋ํด ๋ดค๋ ๊ธฐ์ต์ด ์๋ค. ๋น์์๋ ์ ๋ง ๋~~์ถฉ ๋ณด๊ณ ๋๊ฒผ๊ธฐ ๋๋ฌธ์ ์ค๋ ๊ณต๋ถํ๋ฉด์๋ ๋ง์ด ์์ํ๊ฒ ๋๊ผ๋ค. ๋ํ ์ดํฐ๋ฌ๋ธ์ ๊ฐ์ ๊ฐ๋ ๋ ์ค๋๋ง์ ๋ณด๋ ๊ฒ์ด๊ธฐ์ ๋จธ๋ฆฌ์์ด ๋ณต์กํด์ก๋ค.๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive
์ฑ ์ ๋ค์ ๋ณด๋ฉด์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ํํํ ๋ค์ง ์ ์๋๋ก ํ์. ์ฒ์๋ถํฐ ๋ค์ ๋ณด๋ฉฐ ํ๋ํ๋ ๋ด ๊ฒ์ผ๋ก ๋ง๋ค์ด ๋ณด์! ์๋ง ๊ทธ ๋ ์๋ ๋ด์ฉ๋ณด๋ค๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์๋ํ๋ ์๋ฆฌ, ์์ํ ๊ฐ๋ ์ ๋จผ์ ์ ๋ฆฌํ๋ฉฐ ๊ณต๋ถํ์ง ์์๊น ์ถ๋ค. ๋งต์ ๋ํ ๋๋์ ๋ฐ๋ณต๊ฐ๋ฅํ ๊ฐ์ฒด์ด๋ฏ๋กArray.forEach()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ด ์ ๊ธฐํ์๋ค. ๋น์ฐํfor...of
๊ตฌ๋ฌธ๋ ์ฌ์ฉํ๋ ์ฝํ ๋ฅผ ํ๊ณ ๊ณต๋ถํ ๋ ๋งต์ ์ ํ๋ํ๋๋ก ํด์ผ๊ฒ ๋ค.
๋งต๊ณผ ์ [JavaScript]Map ๊ฐ์ฒด
๐ 2022-08-08