Map๊ณผ ์ผ๋ฐ˜๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ๊ฐ€์š”?

์ƒํ™ฉ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์Šคํ„ฐ๋”” ์ค‘ ์ด๋Ÿฐ ์งˆ๋ฌธ์„ ๋ฐ›์•˜๋‹ค.

Q. Map ๊ฐ์ฒด์™€ ์ผ๋ฐ˜๊ฐ์ฒด์˜ ์ฐจ์ด๊ฐ€ ๋ญ์˜ˆ์š”?
A. Map์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์–ด ๋ฐ์ดํ„ฐ ์กฐ์ž‘์„ ํ•  ์ˆ˜ ์žˆ๊ณ ... ์–ด.. ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์˜ค๋Š˜ ์ผ์„ ๋ฐ˜์„ฑํ•˜๋ฉฐ Map๊ณผ ์ผ๋ฐ˜ ๊ฐ์ฒด์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.


1. ์ผ๋ฐ˜ ๊ฐ์ฒด

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ, ์†์„ฑ(key)-๊ฐ’(value)์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

 

ํŠน์ง•

  • key๋กœ ๋ฌธ์ž์—ด ๋˜๋Š” ์‹ฌ๋ณผ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ( ์ˆซ์ž๋‚˜ ๋‹ค๋ฅธ ํƒ€์ž…์€ ์ž๋™์œผ๋กœ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋œ๋‹ค.)
  • new Object() ๋˜๋Š” ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๋ฐฉ์‹( {} )์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค.
  • JSON ํ˜•ํƒœ๋กœ ์‰ฝ๊ฒŒ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„œ๋ฒ„์™€์˜ ๋ฐ์ดํ„ฐ ํ†ต์‹  ์‹œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
const user = {
    name: "Alice",
    age: 25,
    city: "New York"
};

 

2. Map

ES6์—์„œ ๋„์ž…๋œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ, ๊ฐ์ฒด์™€ ์œ ์‚ฌํ•˜๊ฒŒ ํ‚ค-๊ฐ’ ์Œ์„ ์ €์žฅํ•˜์ง€๋งŒ ๋” ์œ ์—ฐํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

 

ํŠน์ง•

  • ํ‚ค๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ( ๋ฌธ์ž์—ด, ์‹ฌ๋ณผ, ์ˆซ์ž, ๊ฐ์ฒด, ํ•จ์ˆ˜ ๋“ฑ )
  • ์‚ฝ์ž… ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•œ๋‹ค. ์ฆ‰, ๋ฐ˜๋ณต๋ฌธ( for...of ๋˜๋Š” forEach )์„ ์‚ฌ์šฉํ•ด ์ˆœ์ฐจ์ ์œผ๋กœ ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์‚ฝ์ž…/์‚ญ์ œ ์„ฑ๋Šฅ์ด ๊ฐ์ฒด๋ณด๋‹ค ๋” ํšจ์œจ์ ์ด๋‹ค.
  • size, set, get, has, delete ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
const map = new Map();
map.set('key', 'value');
map.set(123, 'number key');
map.set({ id: 1 }, 'object key');

 

์‚ฌ์šฉ์ฒ˜

  • ํ‚ค๋กœ ๊ฐ์ฒด๋‚˜ ํ•จ์ˆ˜ ๊ฐ™์€ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.
  • ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ์— ์ ํ•ฉํ•˜๋ฉฐ, ํŠนํžˆ ์‚ฝ์ž…, ์‚ญ์ œ, ๊ฒ€์ƒ‰์ด ๋นˆ๋ฒˆํ•œ ๊ฒฝ์šฐ์— ์œ ๋ฆฌํ•˜๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค.

๋น„๊ต ์ •๋ฆฌ

ํŠน์„ฑ ์ผ๋ฐ˜ ๊ฐ์ฒด(Object) Map
ํ‚ค ํƒ€์ž… ๋ฌธ์ž์—ด ๋˜๋Š” ์‹ฌ๋ณผ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํƒ€์ž… (์ˆซ์ž, ๊ฐ์ฒด, ํ•จ์ˆ˜ ๋“ฑ)
ํ‚ค ์ˆœ์„œ ๋ณด์žฅ๋˜์ง€ ์•Š์Œ ์‚ฝ์ž…๋œ ์ˆœ์„œ๋ฅผ ์œ ์ง€
ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ ์žˆ์Œ (์ƒ์†๋œ ์†์„ฑ ํฌํ•จ ๊ฐ€๋Šฅ) ์—†์Œ
๋ฐ˜๋ณต ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ์ง์ ‘ ๋ฐ˜๋ณต ๋ถˆ๊ฐ€ ( for...in ์‚ฌ์šฉ ๊ฐ€๋Šฅ) ์ˆœ์ฐจ์  ๋ฐ˜๋ณต ๊ฐ€๋Šฅ ( for...of, forEach )
๋ฉ”์„œ๋“œ ์ง€์› ๊ธฐ๋ณธ ๋ฉ”์„œ๋“œ ( hasOwnProperty, toString ) ๋‹ค์–‘ํ•œ ์ „์šฉ ๋ฉ”์„œ๋“œ ( set, get, has, delete )
์‚ฌ์šฉ์ฒ˜ ์ ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ, ํ‚ค๊ฐ€ ๋ฌธ์ž์—ด์ผ ๋•Œ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ, ํ‚ค๋กœ ๊ฐ์ฒด ๋“ฑ์„ ์‚ฌ์šฉํ•  ๋•Œ

 


ํ›„์ผ๋‹ด

Map์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ, ์ฒ˜์Œ์—” "์ด๊ฑฐ ์ž˜ ์•ˆ์“ฐ์ง€ ์•Š๋‚˜?" ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์‚ฌ์šฉํ•œ ์ ์ด ์—†์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ณต๋ถ€ํ•  ๋•Œ ์ฃผ์˜๊นŠ์— ๋ณด์ง€ ์•Š์•˜๋‹ค.๐Ÿ™ƒ

 

์งˆ๋ฌธ์ด ๋“ค์–ด์™”์„ ๋•Œ๋Š” ์—„์ฒญ ๋‹นํ™ฉํ–ˆ๋‹ค. ํŒ€์› ์ค‘ ํ•œ๋ถ„์ด ์‹ค์ œ ๋ฉด์ ‘์—์„œ ๋ฐ›์•˜๋˜ ์งˆ๋ฌธ ์ค‘ ํ•˜๋‚˜๋ผ๋Š” ๋ง์— ๋” ๋‹นํ™ฉํ–ˆ๋‹ค.

ํŒ€์›๋ถ„์€ node.js๋กœ ๋ฐฑ์—”๋“œ ์ž‘์—…์„ ํ•˜์‹œ๋Š” ๋ถ„์ด์—ˆ๋Š”๋ฐ, DB์—์„œ ํ‚ค-๊ฐ’ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ Map์„ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ๋‹ค๊ณ  ๋ง์”€ํ•˜์…จ๋‹ค.

 

์ด์ œ ์Šคํ„ฐ๋”” ๊ธฐ๊ฐ„๋„ ์–ผ๋งˆ ๋‚จ์ง€ ์•Š์•˜์ง€๋งŒ, ํž˜๋‚ด์„œ ๋๊นŒ์ง€ ์ž˜ ๋งˆ๋ฌด๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค. ๐Ÿ˜น

'Javascript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ ๋™์ž‘ ๊ณผ์ •  (0) 2025.01.13
ํด๋กœ์ €์™€ useState  (0) 2025.01.09