์ด ํฌ์คํ ์ ์ด ๋ฌธ์ ๋ก๋ถํฐ ์์๋์๋ค.
์๋ฃํ Set์ ์ด์ฉํด์ ํ์ด์ผ ํ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์
Set๋๊ฐ๋ญ๋ฐ ๋ชฐ๋ผ์ ํ๋ฆฌ๊ฒ ๋ง๋๋ ๊ทธ๋ฌ๋๊น ์ง๊ธ๋ถํฐ ์์๋ณด์
1. Set ๊ฐ๋
- Set์ ์ค๋ณต์ ํ์ฉํ์ง ์๋ ๊ฐ์ ๋ชจ์๋์ ํน๋ณํ ์ปฌ๋ ์
- Key๊ฐ ์๋ ๊ฐ์ด ์ ์ฅ
2. ์ฃผ์ ๋ฉ์๋(Method)
2-1. ์ฃผ์ ๋ฉ์๋
- new Set(iterable) : Set์ ์์ฑ. ์ด ํธ๋ฌ๋ธ ๊ฐ์ฒด๋ฅผ ์ ๋ฌ๋ฐ์ผ๋ฉด(๋๊ฐ ๋ฐฐ์ด) ๊ทธ ์์ ๊ฐ์ ๋ณต์ฌํด set์ ๋ฃ์ด์ค๋๋ค.
- set.add(value) : ๊ฐ์ ์ถ๊ฐํ๊ณ ์ ์์ ์ ๋ฐํํฉ๋๋ค.
- set.delete(value) : ๊ฐ์ ์ ๊ฑฐ. ํธ์ถ ์์ ์ ์ ๋ด์ ๊ฐ์ด ์์ด์ ์ ๊ฑฐ์ ์ฑ๊ณตํ๋ฉด true, ์๋๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค.
- set.has(value) : ์ ๋ด์ ๊ฐ์ด ์กด์ฌํ๋ฉด true, ์๋๋ฉด false๋ฅผ ๋ฐํ
- set.clear() : ์ ์ ๋น์
- set.size : ์ ์์ ๋ค์ด์๋ ๊ฐ์ ๊ฐ์
2-2. ์ฃผ์ ๋ฉ์๋ ์์
let fruits = ['watermelon', 'mango', 'apple'];
let set = new Set(fruits);
set.add('melon');
set.add('melon'); // ์ค๋ณต๊ฐ์ด ํ์ฉ๋์ง ์๊ธฐ ๋๋ฌธ์ ํ๋ฒ๋ ์ถ๊ฐ๋ฅผ ํด๋ ์ถ๊ฐ๋๋๊ฐ์ด ์์
console.log(set); // Set(4) { 'watermelon', 'mango', 'apple', 'melon' }
set.delete('mango');
console.log(set); // Set(3) { 'watermelon', 'apple', 'melon' }
console.log(set.has('mango')) // false
console.log(set.size); // 3
set.clear();
console.log(set); // Set(0) {}
console.log(set.size); // 0
์ค๋ณต์ ํ์ฉํ์ง ์๋ ๋ฐฉ๋ช ๋ก์ ๋ง๋ ๋ค๋ฉด...?!
let guestBook = new Set();
let jane = { name: 'jane', age: 12 };
let bob = { name: 'bob', age: 22 };
let jay = { name: 'jay', age: 33 };
guestBook.add(jane);
guestBook.add(jane);
guestBook.add(jay);
guestBook.add(bob);
guestBook.add(jay);
for (let visitor of guestBook) {
console.log(visitor.name)
}
// jane jay bob ์์ผ๋ก ์ถ๋ ฅ
console.log(guestBook.size); // 3
์์ ์์์์ ๋ณธ๊ฑฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฌด๋ฆฌ ๊ฐ์ ์ถ๊ฐํ๋ ค๊ณ ํด๋
์ค๋ณต๋๋ ๊ฐ์์ด 3๋ช ์ ๋ฐฉ๋ฌธ๊ฐ์ด ์ฝ์ ์ฐฝ์ ์ถ๋ ฅ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๋ฐฐ์ด ์์์ ์ค๋ณต ๊ฐ์ ์ ๊ฑฐ ํ๋ ๋ฐฉ๋ฒ๋ ์์ผ๋ find๋ฉ์๋๋ฅผ ์ด์ฉํด์ ์ค๋ณต๊ฐ์ ์ฐพ์์ ์ด์ฉ๊ณ ..
ํ์ง๋ง! ์ฒ์๋ถํฐ ์ค๋ณต๊ฐ์ ํ์ฉํ์ง ์๋ Set์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํฉ๋ฆฌ์ ์ด๋ค.
Reference(์ฐธ์กฐ)
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Set
https://ko.javascript.info/map-set