๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
JS

[JS] : Set

by ๊ถŒ์Šพํ–„ 2023. 7. 22.

 

์ €๋ฒˆ์—” ์ƒˆ๋กœ์šด ์ž๋ฃŒ๊ตฌ์กฐ์ธ 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