๊ด€๋ฆฌ ๋ฉ”๋‰ด

ruriruriya

[JavaScript] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ - Set๊ณผ Map ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด์™€์˜ ์ฐจ์ด์  ๋ณธ๋ฌธ

๐Ÿ–Œ๏ธWeb/JavaScript

[JavaScript] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ - Set๊ณผ Map ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด์™€์˜ ์ฐจ์ด์ 

๋ฃจ๋ฆฌ์•ผใ…‘ 2024. 4. 15. 14:33
๋ฐ˜์‘ํ˜•

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ Set๊ณผ Map, ์ด๊ฒƒ๋“ค์ด ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด์™€์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด์ž.

Set

Set ๊ฐ์ฒด๋Š” ๊ฐ’์˜ ์ง‘ํ•ฉ์œผ๋กœ,
์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
๊ฐ ์š”์†Œ๋Š” ์œ ์ผ๋ฌด์ดํ•˜๋ฉฐ,
์‚ฝ์ž… ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋œ๋‹ค.

Set๊ณผ ๋ฐฐ์—ด์˜ ์ฐจ์ด์ 

ํŠน์„ฑ Set ๋ฐฐ์—ด
์ค‘๋ณต ํ—ˆ์šฉ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ ํ—ˆ์šฉํ•จ
์š”์†Œ ์ ‘๊ทผ ์ธ๋ฑ์Šค ์—†์Œ ์ธ๋ฑ์Šค ์žˆ์Œ
์ˆœ์„œ ์œ ์ง€ ์œ ์ง€ํ•จ ์œ ์ง€ํ•จ
์„ฑ๋Šฅ ๊ฒ€์ƒ‰๊ณผ ์œ ๋‹ˆํฌ ๊ด€๋ฆฌ์— ์œ ๋ฆฌ ๊ฒ€์ƒ‰ ๋ฐ ์ •๋ ฌ์—์„œ ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ

 

[ Set์˜ ์ฃผ์š” ํ•จ์ˆ˜์™€ ์˜ˆ์‹œ ]

  • add(value): ์ง‘ํ•ฉ์— ๊ฐ’์„ ์ถ”๊ฐ€
  • delete(value): ์ง‘ํ•ฉ์—์„œ ๊ฐ’์„ ์ œ๊ฑฐ
  • has(value): ์ง‘ํ•ฉ์— ํŠน์ • ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธ
  • clear(): ์ง‘ํ•ฉ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ œ๊ฑฐ
  • size: ์ง‘ํ•ฉ์˜ ํฌ๊ธฐ๋ฅผ ๋ฐ˜ํ™˜
let mySet = new Set();

// ๊ฐ’ ์ถ”๊ฐ€
mySet.add(1);
mySet.add(5);
mySet.add(5);  // ์ค‘๋ณต๋œ ๊ฐ’์€ ์ถ”๊ฐ€๋˜์ง€ ์•Š์Œ

// ๊ฐ’ ์กด์žฌ ํ™•์ธ
console.log(mySet.has(1));   // true
console.log(mySet.has(3));   // false

// ๊ฐ’ ์ œ๊ฑฐ
mySet.delete(1);

// ์ง‘ํ•ฉ์˜ ํฌ๊ธฐ
console.log(mySet.size);     // 1

// ๋ชจ๋“  ๊ฐ’ ์ œ๊ฑฐ
mySet.clear();
console.log(mySet.size);     // 0

 

Map

Map ๊ฐ์ฒด๋Š” ํ‚ค-๊ฐ’ ์Œ์„ ์ €์žฅํ•œ๋‹ค.
์ด๋•Œ, ํ‚ค๋Š” ์ค‘๋ณต๋  ์ˆ˜ ์—†์œผ๋ฉฐ ์‚ฝ์ž… ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋œ๋‹ค.
Map์€ ๊ฐ์ฒด์™€ ๋‹ฌ๋ฆฌ ํ‚ค๋กœ ๋‹ค์–‘ํ•œ ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฃผ์š” ํ•จ์ˆ˜์™€ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Map๊ณผ ๊ฐ์ฒด์˜ ์ฐจ์ด์ 

ํŠน์„ฑ Map ๊ฐ์ฒด
ํ‚ค์˜ ํƒ€์ž… ์–ด๋–ค ํƒ€์ž…๋„ ๊ฐ€๋Šฅ ๋ฌธ์ž์—ด ๋˜๋Š” ์‹ฌ๋ณผ
์ˆœ์„œ ์œ ์ง€ ์œ ์ง€ํ•จ ์ˆซ์ž ํ‚ค๋ฅผ ์ œ์™ธํ•˜๊ณ  ์œ ์ง€ํ•จ
ํฌ๊ธฐ ์ธก์ • size ์†์„ฑ ์ด์šฉ ๋ณ„๋„ ํ•จ์ˆ˜ ํ•„์š”
์„ฑ๋Šฅ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์— ์ตœ์ ํ™” ์ž‘์€ ๋ฐ์ดํ„ฐ์…‹์— ์ ํ•ฉ
๊ธฐ๋ณธ ๋ฉ”์„œ๋“œ ๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ์ œ๊ณต ์ƒ์†๋œ ๋ฉ”์„œ๋“œ ํฌํ•จ ๊ฐ€๋Šฅ

 

[ Map์˜ ์ฃผ์š” ํ•จ์ˆ˜์™€ ์˜ˆ์‹œ ]

  • set(key, value): ๋งต์— ํ‚ค-๊ฐ’ ์Œ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ
  • get(key): ์ฃผ์–ด์ง„ ํ‚ค์— ๋Œ€ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜
  • has(key): ๋งต์— ํŠน์ • ํ‚ค๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
  • delete(key): ๋งต์—์„œ ํ‚ค-๊ฐ’ ์Œ์„ ์ œ๊ฑฐ
  • clear(): ๋งต์˜ ๋ชจ๋“  ํ‚ค-๊ฐ’ ์Œ์„ ์ œ๊ฑฐ
  • size: ๋งต์˜ ์š”์†Œ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
let myMap = new Map();

// ํ‚ค-๊ฐ’ ์Œ ์ถ”๊ฐ€
myMap.set('a', 'alpha');
myMap.set('b', 'beta');
myMap.set('c', 'gamma');

// ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ
console.log(myMap.get('a'));  // "alpha"

// ํ‚ค ์กด์žฌ ํ™•์ธ
console.log(myMap.has('a'));  // true
console.log(myMap.has('x'));  // false

// ํ‚ค-๊ฐ’ ์Œ ์ œ๊ฑฐ
myMap.delete('b');

// ๋งต์˜ ํฌ๊ธฐ
console.log(myMap.size);      // 2

// ๋ชจ๋“  ํ‚ค-๊ฐ’ ์Œ ์ œ๊ฑฐ
myMap.clear();
console.log(myMap.size);      // 0

 

๋ฐ˜์‘ํ˜•