์ ๋ฒ์ ์๋ก์ด ์๋ฃ๊ตฌ์กฐ์ธ Map ์ค๋์ Set ์ด๋ค !!
Set ?
map ๊ณผ๋ ๋ค๋ฅด๊ฒ "๊ฐ"๋ง ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ
๊ฐ์ด ์ค๋ณต๋ ์ ์๊ธฐ์, ๊ณ ์ ๊ฐ๋ง ์ ์ฅ์ด ๋๋ค.
Set ์์ฑ
const mySet = new Set();
์์ฑ ํ์ธ
console.log(mySet);
// ์ถ๋ ฅ ๊ฐ : Set(0) {}
set ์ด๋ผ๋ ๊ฐ์ฒด์ ํ์ฌ๋ 0๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ด๊ฒจ์ ธ ์๋ค.
add(value)
set ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉํ๋ค.
์์
mySet.add('value1');
mySet.add('value2');
์ถ๋ ฅ ๊ฐ
Set(2) { 'value1', 'value2' }
size()
set ๊ฐ์ฒด์ ํฌ๊ธฐ=๊ธธ์ด ๋ฅผ ํ์ธํ ๋ ์ฌ์ฉํ๋ค.
์์
console.log(mySet.size);
์ถ๋ ฅ ๊ฐ
2
์ค๋ณต๋ ๋ฐ์ดํฐ ์ธ์ ํ ์คํธ
const mySet = new Set();
// ๋ฐ์ดํฐ ์ ์ฅ
mySet.add('value1');
mySet.add('value2');
// ์ค๋ณต๋๊ฐ ์ธ์ํ๋์ง ํ
์คํธ
mySet.add('value2'); // ์ค๋ณต๊ฐ์ด๋ผ ์ถ๊ฐ ์๋จ.
mySet.add('value3'); // ์๋ก์ด ๊ณ ์ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ๋ ๊ฒ์ ํ์ธ
// ์ถ๋ ฅ
console.log(mySet.size);
console.log(mySet);
// ์ถ๋ ฅ ๊ฐ
3
Set(3) { 'value1', 'value2', 'value3' }
has(value)
set ๊ฐ์ฒด์ ํน์ ๊ฐ์ด ์กด์ฌํ๋์ง ์กด์ฌ์ฌ๋ถ๋ฅผ ํ์ธํ ๋ ์ฌ์ฉํ๋ค.
์์
console.log(mySet.has('value1')); // true
console.log(mySet.has('value2')); // true
console.log(mySet.has('value4')); // false
์กด์ฌํ์ง ์๋ ๊ฐ์ด ์๋ค๋ฉด false ์กด์ฌํ๋ ๊ฐ์ด๋ผ๋ฉด true ๊ฐ ์ถ๋ ฅ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋ํ has ๋ฉ์๋์ ๊ดํธ์์๋ "๋ฌธ์์ด"ํํ๋ก ๋ฃ์ด์ค์ผ ํ๋ค.
๋ฌธ์์ด๋ก ๋ฃ์ด์ฃผ์ง ์๋๋ค๋ฉด ์๋ ์ค๋ฅ๊ฐ ๋์ค๊ฒ ๋๋ค.
ReferenceError: value1 is not defined
delete(value)
set ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉํ๋ค.
์์
console.log(mySet.delete('value1'));
์ถ๋ ฅ ๊ฐ
true
delete ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๋ถ๋ถ์ console.log ๋ก ํ์ธํ๊ฒ ๋๋ฉด Boolean ํ์ ์ด ์ถ๋ ฅ๋๋ค.
์ญ์ ํ์ธ
console.log(mySet);
// ์ถ๋ ฅ ๊ฐ
Set(2) { 'value2', 'value3' }
์ ์์ ์ผ๋ก ์ ์ฅ๋์ด์๋ value1 ์ด ์ญ์ ๋๊ณ ์ถ๋ ฅ๋๊ฒ์ ํ์ธํ ์ ์๋ค.
clear()
set ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฒด ์ญ์ ํ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋์ด๋ค.
์์
mySet.clear();
console.log(mySet);
// ์ถ๋ ฅ ๊ฐ :
Set(0) {}
๊ธฐ์กด์ ์ ์ฅ๋์ด ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋๋ ์
set์ด๋ผ๋ ๊ฐ๋ง ์ ์ฅํ๋ ๊ฐ์ฒด๊ฐ ์๋ค๋ ๊ฒ์ ์ฒ์์๊ฒ ๋์๊ณ ,
set ์ด๋ map ์ด ๊ฐ์ง๋ ๋ฐ์ดํฐ๋ค์ด iterator ์ ํํ๋ผ๋ ๊ฒ์ ์๊ฒ๋์๋ค.
iterator์ ๋ป : ๋ฐ๋ณต์
๊ทธ๋์ ํด๋น ๋ฐ๋ณต์์ ํํ๋ฅผ ๊ฐ์ง๊ณ ๋ฐ๋ณต๋ฌธ์ ๋ ์ ์๋ for ~ of ~ ์ ๋ํด์ ๊ณต๋ถํด ๋ณผ ์๊ฐ์ด๋ค.
#set #์๋ฃ๊ตฌ์กฐ #๊ฐ์ฒด
'JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] : Null / Undefined (0) | 2023.07.24 |
---|---|
[JS] : Iterator ( for ... of ) (0) | 2023.07.23 |
[JS] : Map (0) | 2023.07.21 |
[JavaScript] : post.destroy() / await Posts.destroy({where : {postId}}) (0) | 2023.07.14 |
[JavaScript] : tirm() (0) | 2023.07.14 |