# Map
Map ๊ฐ์ฒด๋ ํค ์ ๊ฐ
์ ํ ์์ผ๋ก ์ด๋ฃจ์ด์ง ์ปฌ๋ ์
์
๋๋ค.
# Map ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ
Map ๊ฐ์ฒด๋ Map ์์ฑ์ ํจ์๋ก ์์ฑํฉ๋๋ค.
const map = new Map();
# Map ๊ฐ ์ถ๊ฐ
Map ๊ฐ์ฒด๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ๋๋ Map.prototype.set
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
// map ์ ์ธ
const map = new Map();
// map ๊ฐ ์ถ๊ฐ #1
map.set('key1', 'value1');
map.set('key2', 'value2');
// map ๊ฐ ์ถ๊ฐ #2
map
.set('key1', 'value1')
.set('key2', 'value2');
console.log(map); // Map(2) { 'key' => 'value', 'key2' => 'value' }
๋ํ, ์ค๋ณต๋ ํค๊ฐ ์์ ๋๋ Map๊ฐ์ฒด์ ์๋ก์ด ํค๋ก ์ ์ฅ๋์ง ์๊ณ , ๊ฐ์ ๋ฎ์ด์๋๋ค.
// map ์ ์ธ
const map = new Map([['key1', 'value1'], ['key1', 'value2']]);
console.log(map); // Map(1) { 'key1' => 'value2' }
# Map ๊ฐ ์ญ์
Map ๊ฐ์ฒด์ ๊ฐ์ ์ญ์ ํ๋ ค๋ฉด Map.prototype.delete
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ํ Map์ ๋ชจ๋ ๊ฐ์ ์ญ์ ํ ๊ฒฝ์ฐ์๋ Map.prototype.clear
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
// map ์ ์ธ
const map = new Map([['key1', 'value1'], ['key2', 'value2']]);
// map ๊ฐ ์ญ์
map.delete('key1')
console.log(map); // Map(1) { 'key2' => 'value2' }
// map ๋ชจ๋ ๊ฐ ์ญ์
map.clear();
console.log(map); //Map(0) {}
# Map ๋ฐ๋ณต๋ฌธ
Map ๊ฐ์ฒด์ ๊ฐ๋ค์ ๋ฐ๋ณตํ๋ ค๋ฉด Map.prototype.forEach
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋, forEach๊ฐ ๋ฐ๋ ์ฝ๋ฐฑํจ์์ ์ธ์๋ 3๊ฐ์ง(๊ฐ, ํค, map) ์
๋๋ค.
// map ์ ์ธ
const map = new Map([['key1', 'value1'], ['key2', 'value2']]);
map.forEach((val, key) => {
console.log(val + "," + key);
});
// ๊ฒฐ๊ณผ์
๋๋ค
// value1,key1
// value2,key2
// key๊ฐ ๊ฐ์ ธ์ค๊ธฐ
for (let key of map.keys()){
console.log("key : " + key);
}
// ๊ฒฐ๊ณผ์
๋๋ค
// key : key1
// key : key2
// value ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
for (const value of map.values()) {
console.log("value : " + value);
}
// ๊ฒฐ๊ณผ์
๋๋ค
// value : value1
// value : value2
// entries ๋ฐ๋ณต๋ฌธ
for (let[key, value] of map.entries()) {
console.log(key + " : " +value);
}
// ๊ฒฐ๊ณผ์
๋๋ค
// key1 : value1
// key2 : value2
# Map์ ์ฃผ์๋ฉ์๋์ ํ๋กํผํฐ
์์์ ์ค๋ช ํ ๋ฉ์๋ ์ธ์ Map์ ์กฐ์ํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ฉ์๋์ ํ๋กํผํฐ์ ๋๋ค.
map.get(key)
: key์ ํด๋นํ๋ ๊ฐ์ ๋ฐํํฉ๋๋ค.map.has(key)
: key๊ฐ ์กด์ฌํ๋ฉด true, ์กด์ฌํ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค.map.size
: ์์์ ๊ฐ์๋ฅผ ๋ํ๋ ๋๋ค.
# Set
Set ๊ฐ์ฒด๋ ์ค๋ณต๋์ง ์๋ ๊ฐ
๋ค์ ์งํฉ์
๋๋ค. Set์ ํตํด ๊ต์งํฉ, ํฉ์งํฉ, ์ฐจ์งํฉ ๋ฑ ์ํ์ ์งํฉ ํํ์ด ๊ฐ๋ฅํฉ๋๋ค.
# Set ๊ฐ์ฒด์ ์์ฑ
Set์ Set์์ฑ์ ํจ์๋ก ์์ฑํฉ๋๋ค.
const set = new Set();
# Set ๊ฐ ์ถ๊ฐ
Set๊ฐ์ฒด์ ๊ฐ์ ์ถ๊ฐํ ๋๋ Set.prototype.add
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
// set ์ ์ธ
const set = new Set();
// set ๊ฐ ์ถ๊ฐ #1
set.add('javascript');
set.add('vue');
set.add('node');
// set ๊ฐ ์ถ๊ฐ #2
set.add('javascript').add('vue').add('node');
console.log(set); // Set(3) { 'javascript', 'vue', 'node' }
๋ํ, Set์ ์ค๋ณต๋ ๊ฐ์ ์ถ๊ฐ๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค.
// set ์ ์ธ
const set = new Set();
set.add('apple').add('banana').add('banana');
console.log(set); // Set(2) { 'apple', 'banana' }
# Set ๊ฐ ์ญ์
Set ๊ฐ์ฒด์ ๊ฐ์ ์ญ์ ํ๋ ค๋ฉด Set.prototype.delete
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ํ Set๋ด ๋ชจ๋ ๊ฐ์ ์ญ์ ํ ๊ฒฝ์ฐ์๋ Set.prototype.clear
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
// set ์ ์ธ
const set = new Set(['apple', 'banana', 'orange']);
// set ๊ฐ ์ญ์
set.delete('banana')
console.log(set); // Set(2) { 'apple', 'orange' }
// set ์ ์ฒด ๊ฐ ์ญ์
set.clear();
console.log(set); // Set(0) {}
# Set ๋ฐ๋ณต๋ฌธ
Set ๊ฐ์ฒด์ ๊ฐ๋ค์ ์ํํ๋ ค๋ฉด Set.prototype.forEach
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋, forEach๊ฐ ๋ฐ๋ ์ฝ๋ฐฑํจ์์ ์ธ์๋ 3๊ฐ์ง( ์์ ๊ฐ, ์์ ๊ฐ, Set) ์
๋๋ค.
// set ์ ์ธ
const set = new Set(['apple', 'banana', 'orange']);
// set ๊ฐ ์ํ
set.forEach((val, val2, set) => {
console.log(val, val2, set);
});
// ๊ฒฐ๊ณผ์
๋๋ค.
// apple apple Set(3) { 'apple', 'banana', 'orange' }
// banana banana Set(3) { 'apple', 'banana', 'orange' }
// orange orange Set(3) { 'apple', 'banana', 'orange' }
for (const val of set) {
console.log(val);
}
// ๊ฒฐ๊ณผ์
๋๋ค.
// apple
// banana
// orange
// key ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
for (const key of set.keys()) {
console.log(key);
}
// ๊ฒฐ๊ณผ์
๋๋ค
// apple
// banana
// orange
// value ๊ฐ ๊ฐ์ ธ์ค๊ธฐ , set ์์ values() ๋ keys()์ ๊ฐ์ต๋๋ค.
for (const value of set.values()) {
console.log(value);
}
// ๊ฒฐ๊ณผ์
๋๋ค
// apple
// banana
// orange
// ์ถ๊ฐ๋ ์์๋๋ก ๋ฐํ๋ฉ๋๋ค.
for (const [key, value] of set.entries()) {
console.log("key" + " = " + key);
console.log("value" + " = " + value);
}
// ๊ฒฐ๊ณผ์
๋๋ค
// key = apple
// value = apple
// key = banana
// value = banana
// key = orange
// value = orange
# Set์ ์ฃผ์๋ฉ์๋์ ํ๋กํผํฐ
์์์ ์ค๋ช ํ ๋ฉ์๋ ์ธ์ Set๋ฅผ ์กฐ์ํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ฉ์๋์ ํ๋กํผํฐ์ ๋๋ค.
set.has(value)
: value๊ฐ ์กด์ฌํ๋ฉด true, ์กด์ฌํ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค.set.size
: Set ๊ฐ์ฒด๊ฐ ๊ฐ์ง ์์์ ์๋ฅผ ๋ํ๋ ๋๋ค.