10. Map

์–‘ํฌ์ค€ยท2021๋…„ 12์›” 26์ผ
0

JavaScript Info

๋ชฉ๋ก ๋ณด๊ธฐ
10/19
post-thumbnail

๐Ÿ“Œ 10-1 Map์ด๋ž€?

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋‚ด์žฅ ๋ฉ”์„œ๋“œ๋กœ ํ‚ค์™€ ๊ฐ’์˜ ํ˜•ํƒœ๋กœ ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ž๋ฃŒํ˜•์— ์ƒ๊ด€์—†์ด ๋ชจ๋“  ๊ฐ’์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก Key : Value ํ˜•์‹์œผ๋กœ ์ธ์ž๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
๐Ÿ’ก new Map()์œผ๋กœ ๋นˆ Map๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

๐Ÿ“Œ 10-2 Map์˜ ๋ฉ”์„œ๋“œ

  1. Map.prototype.set(key, value) => Map ๊ฐ์ฒด์— ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
  2. Map.prototype.has(key) => Map ๊ฐ์ฒด ์•ˆ์— ํ•ด๋‹น๋˜๋Š” Key์˜ ๊ฐ’์— ๋”ฐ๋ผ Bool๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  3. Map.prototype.get(key) => ํ•ด๋‹น ๋˜๋Š” ํ‚ค์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  4. Map.prototype.delete(key) => ํ•ด๋‹น ๋˜๋Š” ํ‚ค์˜ ๊ฐ’์„ ์‚ญ์ œํ•œ๋‹ค.
  5. Map.prototype.keys() => Map ๊ฐ์ฒด ์•ˆ์— ํ•ด๋‹น๋˜๋Š” Key์˜ ์ด๋ฆ„์„ ์ถœ๋ ฅ
  6. Map.prototype.values() => Map ๊ฐ์ฒด ์•ˆ์— ํ•ด๋‹น๋˜๋Š” Value์˜ ๊ฐ’์„ ์ถœ๋ ฅ
  7. Map.prototype.clear() => Map ๊ฐ์ฒด๋ฅผ ๋นˆ Map ๊ฐ์ฒด๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
  8. Map.size => ๋ฉ”์„œ๋“œ๋Š” ์•„๋‹ˆ๊ณ  ํ”„๋กœํผํ‹ฐ์ด๋ฉฐ Map์•ˆ์— ์ธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ํ™•์ธํ•œ๋‹ค.
const myMap = new Map(); // Map๊ฐ์ฒด ์ƒ์„ฑ
myMap.set('name', 'Kim'); // ๊ฐ์ฒด Key = name, Value = Kim ์ƒ์„ฑ
console.log(myMap.get('name')); // Kim ์ถœ๋ ฅ
myMap.set('age', 20); // ๊ฐ์ฒด ์ถ”๊ฐ€
myMap.set('city', 'Seoul'); // ๊ฐ์ฒด ์ถ”๊ฐ€
console.log(myMap); // Map(3) { 'name' => 'Kim', 'age' => 20, 'city' => 'Seoul' } ์ถœ๋ ฅ
console.log(myMap.keys()); // [Map Iterator] { 'name', 'age', 'city' } ์ถœ๋ ฅ
console.log(myMap.values()); // [Map Iterator] { 'Kim', 20, 'Seoul' } ์ถœ๋ ฅ
console.log(myMap.size) // 3 ์ถœ๋ ฅ
console.log(myMap.has('name')); // true ์ถœ๋ ฅ
myMap.delete('name');
console.log(myMap); // Map(2) { 'age' => 20, 'city' => 'Seoul' } ์ถœ๋ ฅ
myMap.clear(); // Map ์ดˆ๊ธฐํ™”
console.log(myMap); // Map(0) {} ์ถœ๋ ฅ

๐Ÿ“Œ 10-3 Map๊ณผ Obj์™€ ๋‹ค๋ฅธ์ 

1. Map์€ Obj์™€ ๋‹ค๋ฅด๊ฒŒ forEach๋ฌธ์ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

const Obj = {
    name : 'Kim',
    age: 20,
    city: 'Seoul'
} // ๊ฐ์ฒด ์ƒ์„ฑ
const myMap = new Map();
myMap.set('name', 'Kim');
myMap.set('age', 20);
myMap.set('city', 'Seoul'); // Map ์•ˆ์— ๊ฐ์ฒด ์ƒ์„ฑ
myMap.forEach((value) => console.log(value)); // Kim , 20 , Seoul ์ถœ๋ ฅ
Obj.forEach((value) => console.log(value)); // ์˜ค๋ฅ˜ ๋ฐœ์ƒ

forEach๋ฌธ์€ ๋ฐฐ์—ด์˜ ๋ฉ”์„œ๋“œ์ด๋ฏ€๋กœ Obj๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์ง€๋งŒ Map์€ forEach ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์›ํ•œ๋‹ค.
Obj์˜ ๊ฐ’์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํ™•์ธํ• ๋ ค๋ฉด for in ๋ฌธ์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

const Obj = {
    name : 'Kim',
    age: 20,
    city: 'Seoul'
}
for(let index in Obj) {
    console.log(Obj[index]); // Kim, 20, Seoul ์ถœ๋ ฅ
}

2. Map์€ Obj์™€ ๋‹ค๋ฅด๊ฒŒ Key๊ฐ’์— Number Type์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

const Obj = {
    name : 'Kim',
    age: 20,
    city: 'Seoul'
}
Obj[0] = 0; // Obj์— ํ‚ค 0๊ณผ ๊ฐ’ 0์ธ ๊ฐ์ฒด ์ถ”๊ฐ€
const myMap = new Map();
myMap.set('name', 'Kim');
myMap.set('age', 20);
myMap.set('city', 'Seoul');
myMap.set(0, 0); // Map์— ํ‚ค 0๊ณผ ๊ฐ’ 0์ธ ๊ฐ์ฒด ์ถ”๊ฐ€
console.log(Obj); // { '0': 0, name: 'Kim', age: 20, city: 'Seoul' } ์ถœ๋ ฅ
console.log(myMap); // Map(4) { 'name' => 'Kim', 'age' => 20, 'city' => 'Seoul', 0 => 0 } 

์ด์™€ ๊ฐ™์ด Key๊ฐ’์— ์ˆซ์žํ˜•์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

profile
JS ์ฝ”๋ฆฐ์ด

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