๐Ÿฅท

6. Map & Set

Index

ย 

1. Map

1.1 Map ์ด๋ž€?

ย 
Map ๊ฐ์ฒด๋Š” ํ‚ค-๊ฐ’ ์Œ์„ ๊ฐ€์ง€๋Š” ๊ฐ์ฒด ์ž๋ฃŒํ˜•์˜ ํ•œ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค.
let m = new Map(); // Map์— ๊ฐ’์„ ๋„ฃ๊ธฐ m.set('ํ•˜๋‚˜', '1'); m.set(1, 'ํ•˜๋‚˜'); m.set(true, 1); m.set(false, 0); // Map์˜ ๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ console.log(m.get('ํ•˜๋‚˜')); console.log(m.get(true)); // Map์˜ ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ console.log(m.has('ํ•˜๋‚˜')); // Map์˜ ๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ธฐ console.log(m.delete('ํ•˜๋‚˜')); console.log(m.has('ํ•˜๋‚˜')); console.log(m); // Map์˜ ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•˜๊ธฐ console.log(m.size); // let mm = new Map() // mm.set('ํ•˜๋‚˜', m) // Map(1)ย {'ํ•˜๋‚˜' => Map(3)} // mm.set('ํ•˜๋‚˜', {'one':1, 'two':2}) // Map(1)ย {'ํ•˜๋‚˜' => {โ€ฆ}}
ย 

1.2 Map ์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ™œ์šฉ๋ฒ•

ย 
// Map์˜ ์ˆœํ™˜ for (var variable of m) { console.log(`m์„ ์ˆœํšŒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ${variable[0]}`) console.log(`m์„ ์ˆœํšŒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ${variable[1]}`) } // Map์˜ ๊ฐ’์— ์ ‘๊ทผ console.log(m.keys()); console.log(m.values()); console.log(m.entries()); // ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง€๋Š” ์ž๋ฃŒํ˜•์„ ๋งตํ•‘ํ•˜๊ธฐ let temp = new Map([[1, 10], [2, 20], [3, 30], [4, 40]]); console.log(temp);
ย 

1.3 Map ๊ณผ Object์˜ ์ฐจ์ด

ย 
Map ๊ฐ์ฒด์™€ Object ๋Š” ๋‘˜ ๋‹ค key - value ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค๋Š” ์ ์—์„œ ๋น„์Šทํ•ด๋ณด์ด์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค
  • Object์˜ ํ‚ค๋Š” ๋ฌธ์ž์—ด ํƒ€์ž…์œผ๋กœ๋งŒ ์ง€์ •ํ•ด์•ผํ•˜์ง€๋งŒ, Map์˜ ํ‚ค๋Š” ๋ชจ๋“  ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Object๋Š” ํฌ๊ธฐ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ˆ˜๋™์œผ๋กœ ์•Œ์•„๋‚ด์•ผ ํ•˜์ง€๋งŒ, Map์€ size๋ฅผ ํ†ตํ•ด ํฌ๊ธฐ๋ฅผ ์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
objMap = new Map(); objMap.set('one', 1); objMap.set('two', 2); objMap.set('three', 3); console.log(objMap.size); // 3 obj = {hi : 1, hi2 : 2, hi3 :3, hi4: 4}; console.log(obj.length); // undefined console.log(obj.size); // undefined
  • Map์€ย ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…์—์„œ Object ๋ณด๋‹ค ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ณด์ž…๋‹ˆ๋‹ค.
ย 

2. Set

2.1 Set ์ด๋ž€?

ย 
Set์€ ๋ชจ๋“  ํƒ€์ž…์˜ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฐ์ฒด์ž๋ฃŒํ˜•์˜ ํ•œ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ๊ฐ์ฒด ์•ˆ์˜ ๊ฐ’์€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
let s = new Set('abcdeeeeeeeee'); console.log(s); console.log(s.size); // Set์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ธฐ s.add('f'); console.log(s); // Set์„ ์ˆœํ™˜ํ•˜๊ธฐ for (var variable of s) { console.log(variable); } // ๊ฐ’์ด ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ let ss = new Set('abcdeeeeeeeee'.split('')); console.log(ss); // Set์˜ ๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ธฐ ss.delete('b'); // Set์˜ ๊ฐ’์„ ํ™•์ธํ•˜๊ธฐ console.log(ss.has('a')); // Set์˜ ๋ชจ๋“  ๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ธฐ ss.clear console.log(ss); let a = new Set('abc'); let b = new Set('cde'); // ๊ต์ง‘ํ•ฉ let cro = [...a].filter(value => b.has(value)) // ํ•ฉ์ง‘ํ•ฉ let union = new Set([...a].concat(...b)) // ์ฐจ์ง‘ํ•ฉ let dif = new Set([...a].filter(x => !b.has(x)));