๐Ÿ—บ๏ธ Map / ๐Ÿงญ Set [ JS ]

hoheesuยท2024๋…„ 2์›” 7์ผ

JavaScript

๋ชฉ๋ก ๋ณด๊ธฐ
2/8
post-thumbnail

โ˜€๏ธ Map๊ณผ Set

โœ… ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ์ฒด / ๋ฐฐ์—ด ์„ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋ณต์žกํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๋Ÿผ์—๋„ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„๋“ค์ด ์žˆ์–ด Map๊ณผ Set์ด๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ๋งŒ๋“ค์–ด์กŒ๋‹ค.

โญ๏ธ Map

Map์€ key-value๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐ์ฒด์™€ ๋น„์Šทํ•˜๋‹ค. Map์€ ๊ฐ ์Œ์˜ key์™€ value์„ ์ €์žฅํ•˜๋ฉฐ, ๊ฐ์ฒด์™€ ๋‹ฌ๋ฆฌ key๋กœ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์œ ํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Map์€ key๊ฐ€ ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์ถ”๊ฐ€ํ•œ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • key-vlaue์Œ ์ถ”๊ฐ€ ๊ฒ€์ƒ‰(set)
  • ํ‚ค-๊ฐ’ ์Œ ์‚ญ์ œ(delete)
  • ๋ชจ๋“  ํ‚ค-๊ฐ’ ์Œ ์ œ๊ฑฐ(clear)
  • Map ํฌ๊ธฐ ๋ฐ ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ(size)

๐Ÿ”์ฃผ์š” ๋ฉ”์†Œ๋“œ

new Map()ย โ€“ Map ์ƒ์„ฑ
map.set(key, value)ย โ€“ย key๋ฅผ ์ด์šฉํ•ดย value๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
map.get(key)ย โ€“ย key์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.ย key๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉดย undefined๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
map.has(key)ย โ€“ย key๊ฐ€ ์กด์žฌํ•˜๋ฉดย true, ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉดย false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
map.delete(key)ย โ€“ย key์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
map.clear()ย โ€“ ๋งต ์•ˆ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
map.sizeย โ€“ ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿท๏ธ Map ์‚ฌ์šฉ ์˜ˆ์‹œ ์ฝ”๋“œ

// ์ƒˆ๋กœ์šด Map์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด Map() ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
const myMap = new Map();
// Map์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด set() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
myMap.set('key', 'value');
// Map์—์„œ ๊ฐ’์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด get()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
console.log(myMap.get('key')); // 'value' ์ถœ๋ ฅ

๐Ÿ”„ Map์˜ ๋ฐ˜๋ณต

Map์—์„œ keys(), values(), entries()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ key, value ๋ฐ key-value๋ฅผ ๋ฐ˜๋ณตํ•  ์ˆ˜์žˆ๋‹ค.
entries()๋Š” {['key',vlaue],['key',value]}ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

const myMap = new Map();
myMap.set('one', 1);
myMap.set('two', 2);
myMap.set('three', 3);

for (const key of myMap.keys()) {
  console.log(key);
}

for (const value of myMap.values()) {
  console.log(value);
}

for (const entry of myMap.entries()) {
  console.log(`${entry[0]}: ${entry[1]}`);
  // one: 1
  // two: 2
  // three: 3
}

โญ๏ธ Set

Set์€ ๊ณ ์œ ํ•œ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค. Set์€ ๊ฐ’๋งŒ ์ €์žฅํ•˜๋ฉฐ, ํ‚ค๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค โžก๏ธ ๊ฐ’์ด ์ค‘๋ณต๋˜์ง€์•Š๋Š” ์œ ์ผํ•œ ์š”์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ๋˜๋Š”๊ฒƒ์ด Set์ด๋‹ค.

  • ๊ฐ’ ์ถ”๊ฐ€ ๋ฐ ๊ฒ€์ƒ‰
  • ๊ฐ’ ์‚ญ์ œ
  • ๋ชจ๋“  ๊ฐ’ ์ œ๊ฑฐ
  • Set ํฌ๊ธฐ ๋ฐ ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ

๐Ÿท๏ธ Set ์‚ฌ์šฉ ์˜ˆ์‹œ ์ฝ”๋“œ

// Set() ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Set์„ ์‹œ์ž‘ํ•œ๋‹ค.
const mySet = new Set();
// Set์— ๊ฐ’์„ ์ถ”๊ฐ€ ํ•˜๊ธฐ์œ„ํ•ด add()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
mySet.add('value1');
mySet.add('value2');
// has()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Set์—์„œ ๊ฐ’์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
console.log(mySet.has('value1')); // true ์ถœ๋ ฅ

๐Ÿ”„ Set์˜ ๋ฐ˜๋ณต

Set์€ Map๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Set์—์„œ ๋ฐ˜๋ณต์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” values()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

const mySet = new Set();
mySet.add('value1');
mySet.add('value2');
mySet.add('value3');

for (const value of mySet.values()) {
  console.log(value); 
  // value1
  // value2
  // value3
}

โœ… Set์˜ ํฌ๊ธฐ ๋ฐ ์กด์žฌ์—ฌ๋ถ€ ํ™•์ธ

Set์˜ ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•˜๊ธฐ์œ„ํ•ด size()์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ํŠน์ • ๊ฐ’์„ Set์—์„œ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์กด์žฌ์˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ๋•Œ๋Š” has()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

console.log(mySet.size); // 3 ์ถœ๋ ฅ
console.log(mySet.has('value2')); // true ์ถœ๋ ฅ
profile
๐Ÿค”๐Ÿ‘๐Ÿ’ก๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป๐Ÿคฏ๐Ÿ˜‡

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