Set
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itโs been available across browsers since โจ2015๋ 7์โฉ.
* Some parts of this feature may have varying levels of support.
Set
๊ฐ์ฒด๋ ์์๊ฐ์ด๋ ๊ฐ์ฒด ์ฐธ์กฐ ๊ฐ ๋ฑ ๋ชจ๋ ์ ํ์ ๊ณ ์ ๊ฐ์ ์ ์ฅํ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ค๋ช
Set
๊ฐ์ฒด๋ ๊ฐ์ ์ปฌ๋ ์
์
๋๋ค. Set์ ๊ฐ์ ํ ๋ฒ๋ง ๋ํ๋ ์ ์์ผ๋ฉฐ, Set์ ์ปฌ๋ ์
์์๋ ๊ณ ์ ํ ๊ฐ์
๋๋ค. Set์ ์์๋ฅผ ์ฝ์
์์๋๋ก ์ํํ ์ ์์ต๋๋ค. ์ฝ์
์์๋ ๊ฐ ์์๊ฐ add()
๋ฉ์๋์ ์ํด Set์ ์ฑ๊ณต์ ์ผ๋ก ์ฝ์
๋ ์์(์ฆ, add()
๊ฐ ํธ์ถ๋ ๋ ์ด๋ฏธ Set์ ๋์ผํ ์์๊ฐ ์๋ ๊ฒฝ์ฐ)์ ํด๋นํฉ๋๋ค.
๋ช ์ธ์์์๋ Set์ด "ํ๊ท ์ ์ผ๋ก ์ปฌ๋ ์ ์ ์์ ์์ ๋ฐ๋ผ ์ ํ ์ดํ์ ์ก์ธ์ค ์๊ฐ์ ์ ๊ณตํ๋" ๋ฐฉ์์ผ๋ก ๊ตฌํ๋์ด์ผ ํ๋ค๊ณ ์๊ตฌํ๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ด๋ถ์ ์ผ๋ก ํด์ ํ ์ด๋ธ(O(1) ์กฐํ), ๊ฒ์ ํธ๋ฆฌ(O(log(N)) ์กฐํ) ๋๋ ๋ณต์ก์ฑ์ด O(N)๋ณด๋ค ์ข์ ๋ค๋ฅธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ํํํ ์ ์์ต๋๋ค.
๊ฐ ๋๋ฑ์ฑ
๊ฐ ๋์ผ์ฑ์ ๋์ผ ๊ฐ ์ ๋ก ๋๋ฑ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. (์ด์ ์๋ 0
๊ณผ -0
์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ทจ๊ธํ๋ ๋์ผ ๊ฐ ๋๋ฑ๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ํ์ธํ์ธ์.) ์ฆ, ===
์ฐ์ฐ์์ ์๋ฏธ์ ๋ฐ๋ผ NaN
์ NaN
๊ณผ ๋์ผํ๊ฒ ๊ฐ์ฃผ๋๋ฉฐ(NaN !== NaN
์์๋ ๋ถ๊ตฌํ๊ณ ) ๋ค๋ฅธ ๋ชจ๋ ๊ฐ์ ๋์ผํ๊ฒ ๊ฐ์ฃผ๋ฉ๋๋ค.
์ฑ๋ฅ
has
๋ฉ์๋๋ ์ด์ ์ Set์ ์ถ๊ฐ๋ ๋๋ถ๋ถ์ ์์๋ฅผ ์ํํ๋ ๊ฒ๋ณด๋ค ํ๊ท ์ ์ผ๋ก ๋น ๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๊ฐ์ด Set์ ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. ํนํ ๋ฐฐ์ด์ length
๊ฐ Set์ size
์ ๊ฐ์ ๋ Array.prototype.includes
๋ฉ์๋๋ณด๋ค ํ๊ท ์ ์ผ๋ก ๋ ๋น ๋ฆ
๋๋ค.
Set ๊ตฌ์ฑ
Set
๊ฐ์ฒด๋ ์ํ ์ฐ์ฐ๊ณผ ๊ฐ์ด ์งํฉ์ ๊ตฌ์ฑํ ์ ์๋ ๋ช ๊ฐ์ง ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ๋ฉ์๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฉ์๋ | ๋ฐํ ์ ํ | ์ํ์ ๋์น | ๋ฒค ๋ค์ด์ด๊ทธ๋จ |
---|---|---|---|
A.difference(B) |
Set |
||
A.intersection(B) |
Set |
||
A.symmetricDifference(B) |
Set |
||
A.union(B) |
Set |
||
A.isDisjointFrom(B) |
Boolean |
||
A.isSubsetOf(B) |
Boolean |
||
A.isSupersetOf(B) |
Boolean |
์ด ๋ฉ์๋๋ค์ ์ผ๋ฐํ ๊ฐ๋ฅ์ฑ์ ๋์ด๊ธฐ ์ํด Set
๊ฐ์ฒด๋ฟ๋ง ์๋๋ผ ์ ์ฌ Set์ธ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ํ์ฉํฉ๋๋ค.
์ ์ฌ Set ๊ฐ์ฒด(Set-like objects)
๋ชจ๋ Set ๊ตฌ์ฑ ๋ฉ์๋๋ this
๊ฐ ์ค์ Set
์ธ์คํด์ค์ฌ์ผ ํ์ง๋ง, ์ธ์๋ Set๊ณผ ์ ์ฌํ๋ฉด ๋ฉ๋๋ค. ์ ์ฌ Set ๊ฐ์ฒด๋ ๋ค์์ ์ ๊ณตํ๋ ๊ฐ์ฒด์
๋๋ค.
- ์ซ์๊ฐ์ ๊ฐ์ง
size
์์ฑ - ์์๋ฅผ ์ทจํ๊ณ ๋ถ์ธ์ ๋ฐํํ๋
has()
๋ฉ์๋ - Set์ ์์์ ๋ํ ๋ฐ๋ณต์๋ฅผ ๋ฐํํ๋
keys()
๋ฉ์๋
์๋ฅผ ๋ค์ด Map
๊ฐ์ฒด๋ size
, has()
, keys()
๋ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ Set์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์๋ ์๋์ฒ๋ผ ํค Set์ฒ๋ผ ๋์ํฉ๋๋ค.
const a = new Set([1, 2, 3]);
const b = new Map([
[1, "one"],
[2, "two"],
[4, "four"],
]);
console.log(a.union(b)); // Set(4) {1, 2, 3, 4}
์ฐธ๊ณ :
์ ์ฌ Set ํ๋กํ ์ฝ์ ์์๋ฅผ ์์ฑํ๊ธฐ ์ํด [@@iterator]()
๋์ keys()
๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค. ์ด๋ ๋งต์ ๊ฒฝ์ฐ ๋ฐ๋ณต์๋ entries๋ฅผ ์์ฑํ์ง๋ง has()
๋ฉ์๋๋ keys๋ฅผ ์ทจํ๊ธฐ ๋๋ฌธ์ ๋งต์ ์ ํจํ ์ ์ Set ๊ฐ์ฒด๋ก ๋ง๋ค๊ธฐ ์ํด์์
๋๋ค.
๋ฐฐ์ด์ has()
๋ฉ์๋๋ size
์์ฑ์ด ์๊ณ keys()
๋ฉ์๋๊ฐ ์์ ๋์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ ์ฌ Set์ด ์๋๋๋ค. WeakSet
๊ฐ์ฒด ์ญ์ keys()
๋ฉ์๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ ์ฌ Set์ด ์๋๋๋ค.
์ ์ฌ Set ๋ธ๋ผ์ฐ์ API
๋ธ๋ผ์ฐ์ Set
๊ณผ ์ ์ฌํ ๊ฐ์ฒด(๋๋ "์ ์ฌ Set ๊ฐ์ฒด")๋ Set
์ฒ๋ผ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ๋์ํ๋ ์น API ์ธํฐํ์ด์ค์
๋๋ค.
Set
๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์์๋ ๊ฐ์ฒด์ ์ถ๊ฐํ ์์๋๋ก ์ํํ ์ ์์ต๋๋ค. ์ ์ฌ Set
๊ฐ์ฒด์ Set
์๋ ๋์ผํ ์ด๋ฆ๊ณผ ๋์์ ๊ณต์ ํ๋ ์์ฑ์ ๋ฉ์๋๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Set
๊ณผ ๋ฌ๋ฆฌ ๊ฐ ํญ๋ชฉ์ ๋ํด ๋ฏธ๋ฆฌ ์ ์๋ ํน์ ์ ํ๋ง ํ์ฉํฉ๋๋ค.
ํ์ฉ๋๋ ์ ํ์ ๋ช
์ธ IDL ์ ์์ ์ค์ ๋์ด ์์ต๋๋ค.
์๋ฅผ ๋ค์ด GPUSupportedFeatures
๋ ํค/๊ฐ์ผ๋ก ๋ฌธ์์ด์ ์ฌ์ฉํด์ผ ํ๋ ์ ์ฌ Set
๊ฐ์ฒด์
๋๋ค.
์ด๋ ์๋ ์ฌ์ IDL์ ์ ์๋์ด ์์ต๋๋ค.
interface GPUSupportedFeatures {
readonly setlike<DOMString>;
};
์ ์ฌ Set
๊ฐ์ฒด๋ ์ฝ๊ธฐ ์ ์ฉ์ด๊ฑฐ๋ ์ฝ๊ธฐ-์ฐ๊ธฐ ๊ฐ๋ฅํฉ๋๋ค(์์ IDL์์ readonly
ํค์๋ ์ฐธ์กฐ).
- ์ฝ๊ธฐ ์ ์ฉ
Set
์ ์ฌ ๊ฐ์ฒด์๋size
์์ฑ๊ณผ ๋ฉ์๋entries()
, [forEach()
](#set. prototype.foreach),has()
,keys()
,values()
,@@iterator
๊ฐ ์์ต๋๋ค. - ์ฐ๊ธฐ ๊ฐ๋ฅํ
Set
์ ์ฌ ๊ฐ์ฒด์๋ ์ถ๊ฐ์ ์ผ๋กclear()
,delete()
,add()
๋ฉ์๋๊ฐ ์์ต๋๋ค.
๋ฉ์๋์ ์์ฑ์ ํญ๋ชฉ์ ์ ํ์ ๋ํ ์ ํ์ ์ ์ธํ๊ณ ๋ Set
์ ๋๋ฑํ ๊ฐ์ฒด์ฒ๋ผ ๋์ผํ ๋์์ ํฉ๋๋ค.
์๋๋ ์ฝ๊ธฐ ์ ์ฉ์ธ ์ ์ฌ Set
๋ธ๋ผ์ฐ์ ๊ฐ์ฒด์ ์์
๋๋ค.
์๋๋ ์ฐ๊ธฐ ๊ฐ๋ฅํ ์ ์ฌ Set
๋ธ๋ผ์ฐ์ ๊ฐ์ฒด์ ์์
๋๋ค.
์์ฑ์
Set()
-
์๋ก์ด
Set
๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค.
์ ์ ์์ฑ
Set[@@species]
-
ํ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์์ฑ์ ํจ์์ ๋๋ค.
์ธ์คํด์ค ์์ฑ
์๋ ์์ฑ์ Set.prototype
์ ์ ์๋๋ฉฐ ๋ชจ๋ Set
์ธ์คํด์ค์์ ๊ณต์ ๋ฉ๋๋ค.
Set.prototype.constructor
-
์ธ์คํด์ค ๊ฐ์ฒด๋ฅผ ์์ฑํ ์์ฑ์ ํจ์์ ๋๋ค.
Set
์ธ์คํด์ค์ ๊ฒฝ์ฐ ์ด๊ธฐ ๊ฐ์Set
์์ฑ์์ ๋๋ค. Set.prototype.size
-
Set
๊ฐ์ฒด์ ์๋ ๊ฐ์ ์๋ฅผ ๋ฐํํฉ๋๋ค. Set.prototype[@@toStringTag]
-
@@toStringTag
์์ฑ์ ์ด๊ธฐ ๊ฐ์ ๋ฌธ์์ด"Set"
์ ๋๋ค. ์ด ์์ฑ์Object.prototype.toString()
์์ ์ฌ์ฉํฉ๋๋ค.
์ธ์คํด์ค ๋ฉ์๋
Set.prototype.add()
-
Inserts a new element with a specified value in to a
Set
object, if there isn't an element with the same value already in theSet
. -
Set
๊ฐ์ฒด์ ๊ฐ์ ๊ฐ์ด ์์ง ์๋ค๋ฉด ํด๋นSet
๊ฐ์ฒด์ ํน์ ๊ฐ์ ๊ฐ์ง ์๋ก์ด ์์๋ฅผ ์ฝ์ ํฉ๋๋ค. Set.prototype.clear()
-
Set
๊ฐ์ฒด์์ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐํฉ๋๋ค. Set.prototype.delete()
-
value
์ ์ฐ๊ฒฐ๋ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ์์๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ ๊ฑฐ๋์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋ถ์ธ์ ๋ฐํํฉ๋๋ค.Set.prototype.has(value)
๋ ์ดํfalse
๋ฅผ ๋ฐํํฉ๋๋ค. Set.prototype.difference()
-
ํ๋์ Set์ ๋ฐ์์ ์ฃผ์ด์ง Set ์์ผ๋ ์ด ์ธ์คํด์ค์ Set์๋ ์๋ ์์๊ฐ ํฌํจ๋ ์๋ก์ด Set์ ๋ฐํํฉ๋๋ค.
Set.prototype.entries()
-
Set
๊ฐ์ฒด์ ๊ฐ ์์์ ๋ํด ์ฝ์ ์์๋๋ก[value, value]
๋ฐฐ์ด ์ ํฌํจํ๋ ์ ๋ฐ๋ณต์ ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค. ์ด๋Map
๊ฐ์ฒด์ ์ ์ฌํ๋ฏ๋ก ๊ฐ ํญ๋ชฉ์ ํค๋Set
์ ๊ฐ๊ณผ ๋์ผํฉ๋๋ค. Set.prototype.forEach()
-
Set
๊ฐ์ฒด์ ์๋ ๊ฐ ๊ฐ์ ๋ํด ์ฝ์ ์์๋๋กcallbackFn
์ ํ ๋ฒ์ฉ ํธ์ถํฉ๋๋ค.thisArg
๋งค๊ฐ๋ณ์๊ฐ ์ฃผ์ด์ง๋ค๋ฉด,callbackFn
์ ํธ์ถํ ๋๋ง๋ค ์ด ๋งค๊ฐ๋ณ์๊ฐthis
๊ฐ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. Set.prototype.has()
-
์ฃผ์ด์ง ๊ฐ์ ๊ฐ์ง ์์๊ฐ
Set
๊ฐ์ฒด ๋ด ์กด์ฌ ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋ถ์ธ์ ๋ฐํํฉ๋๋ค. Set.prototype.intersection()
-
ํ๋์ Set์ ๋ฐ์ ์ด Set๊ณผ ์ฃผ์ด์ง Set์ ์์๋ฅผ ๋ชจ๋ ํฌํจํ๋ ์ Set์ ๋ฐํํฉ๋๋ค.
Set.prototype.isDisjointFrom()
-
ํ๋์ Set์ ๋ฐ์ ์ฃผ์ด์ง Set๊ณผ ์ด Set ๊ฐ์ ๊ณตํต ์์๊ฐ ์๋์ง๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ถ์ธ์ ๋ฐํํฉ๋๋ค.
Set.prototype.isSubsetOf()
-
ํ๋์ Set์ ๋ฐ์ ์ด Set์ ๋ชจ๋ ์์๊ฐ ์ฃผ์ด์ง Set ์์ ์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋ถ์ธ์ ๋ฐํํฉ๋๋ค.
Set.prototype.isSupersetOf()
-
ํ๋์ Set์ ๋ฐ์ ์ฃผ์ด์ง Set์ ๋ชจ๋ ์์๊ฐ ์ด Set ์์ ์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋ถ์ธ์ ๋ฐํํฉ๋๋ค.
Set.prototype.keys()
-
Set.prototype.values()
์ ๋ณ์นญ์ ๋๋ค. Set.prototype.symmetricDifference()
-
ํ๋์ Set์ ๋ฐ์ ์ด Set๊ณผ ์ฃผ์ด์ง Set ๋ชจ๋์ ์ํ ์์๋ฅผ ์ ์ธํ๊ณ ์ฃผ์ด์ง Set ํน์ ์ด Set์๋ง ์๋ ์์๊ฐ ์ํด์๋ ์๋ก์ด Set์ ๋ฐํํฉ๋๋ค.
Set.prototype.union()
-
ํ๋์ Set์ ๋ฐ์ ์ด Set๊ณผ ์ฃผ์ด์ง Set ๋ชจ๋ ํน์ ํ๋๋ง ์ํด์๋ ์์๊ฐ ๋ค์ด์๋ ์๋ก์ด Set์ ๋ฐํํฉ๋๋ค.
Set.prototype.values()
-
Set
๊ฐ์ฒด ๋ด์ ๊ฐ ์์์ ๊ฐ์ ์ฝ์ ์์๋๋ก yieldํ๋ ์๋ก์ด ๋ฐ๋ณต์ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํฉ๋๋ค. Set.prototype[@@iterator]()
-
Set
๊ฐ์ฒด ๋ด์ ๊ฐ ์์๋ฅผ ์ฝ์ ์์๋๋ก yieldํ๋ ์๋ก์ด ๋ฐ๋ณต์ ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค.
์์
Set ๊ฐ์ฒด ์ฌ์ฉํ๊ธฐ
const mySet1 = new Set();
mySet1.add(1); // Set(1) { 1 }
mySet1.add(5); // Set(2) { 1, 5 }
mySet1.add(5); // Set(2) { 1, 5 }
mySet1.add("some text"); // Set(3) { 1, 5, 'some text' }
const o = { a: 1, b: 2 };
mySet1.add(o);
mySet1.add({ a: 1, b: 2 }); // o ๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ด์ฐฎ์ต๋๋ค
mySet1.has(1); // true
mySet1.has(3); // false, 3 ์ด set์ ์ถ๊ฐ๋์ง ์์๊ธฐ ๋๋ฌธ์
๋๋ค.
mySet1.has(5); // true
mySet1.has(Math.sqrt(25)); // true
mySet1.has("Some Text".toLowerCase()); // true
mySet1.has(o); // true
mySet1.size; // 5
mySet1.delete(5); // set์์ 5 ์ ๊ฑฐ
mySet1.has(5); // false, 5 ๋ ์ ๊ฑฐ๋์์ต๋๋ค.
mySet1.size; // 4, ๋ง ํ๋๋ฅผ ์ ๊ฑฐํ๊ธฐ ๋๋ฌธ์
mySet1.add(5); // Set(5) { 1, 'some text', {...}, {...}, 5 } - ์ด์ ์ ์ญ์ ๋ ์์ดํ
์ด ์๋ก์ด ์์ดํ
์ผ๋ก ์ถ๊ฐ๋๋, ์ญ์ ์ ์๋ ์์น๋ฅผ ์ ์งํ์ง ๋ชปํฉ๋๋ค.
console.log(mySet1); // Set(5) { 1, "some text", {โฆ}, {โฆ}, 5 }
set ์ํํ๊ธฐ
set์ ์์๋ฅผ ์ฝ์ ์์๋๋ก ์ํํฉ๋๋ค.
for (const item of mySet1) {
console.log(item);
}
// 1, "some text", { "a": 1, "b": 2 }, { "a": 1, "b": 2 }, 5
for (const item of mySet1.keys()) {
console.log(item);
}
// 1, "some text", { "a": 1, "b": 2 }, { "a": 1, "b": 2 }, 5
for (const item of mySet1.values()) {
console.log(item);
}
// 1, "some text", { "a": 1, "b": 2 }, { "a": 1, "b": 2 }, 5
// ํค์ ๊ฐ์ ์ฌ๊ธฐ์ ๊ฐ์ต๋๋ค.
for (const [key, value] of mySet1.entries()) {
console.log(key);
}
// 1, "some text", { "a": 1, "b": 2 }, { "a": 1, "b": 2 }, 5
// Array.from์ ์ฌ์ฉํ์ฌ Set ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด ๊ฐ์ฒด๋ก ๋ณ๊ฒฝ
const myArr = Array.from(mySet1); // [1, "some text", {"a": 1, "b": 2}, {"a": 1, "b": 2}, 5]
// ์๋ ์ฝ๋๋ HTML ๋ฌธ์์์ ์ํ๋ ๋ ๋์ํฉ๋๋ค.
mySet1.add(document.body);
mySet1.has(document.querySelector("body")); // true
// Set๊ณผ ๋ฐฐ์ด๊ฐ์ ๋ณ๊ฒฝ
const mySet2 = new Set([1, 2, 3, 4]);
console.log(mySet2.size); // 4
console.log([...mySet2]); // [1, 2, 3, 4]
// ๊ต์งํฉ(intersection)์ ์๋์ฒ๋ผ ์๋ฎฌ๋ ์ด์
๊ฐ๋ฅํฉ๋๋ค.
const intersection = new Set([...mySet1].filter((x) => mySet2.has(x)));
// ์ฐจ์งํฉ(difference)์ ์๋์ฒ๋ผ ์๋ฎฌ๋ ์ด์
๊ฐ๋ฅํฉ๋๋ค.
const difference = new Set([...mySet1].filter((x) => !mySet2.has(x)));
// Set์ด ๊ฐ์ง ๊ฐ์ฒด๋ฅผ forEach()๋ฅผ ์ฌ์ฉํ์ฌ ์ํ
mySet2.forEach((value) => {
console.log(value);
});
// 1
// 2
// 3
// 4
๊ธฐ๋ณธ์ ์ธ Set ์ฐ์ฐ ๊ตฌํํ๊ธฐ
function isSuperset(set, subset) {
for (const elem of subset) {
if (!set.has(elem)) {
return false;
}
}
return true;
}
function union(setA, setB) {
const _union = new Set(setA);
for (const elem of setB) {
_union.add(elem);
}
return _union;
}
function intersection(setA, setB) {
const _intersection = new Set();
for (const elem of setB) {
if (setA.has(elem)) {
_intersection.add(elem);
}
}
return _intersection;
}
function symmetricDifference(setA, setB) {
const _difference = new Set(setA);
for (const elem of setB) {
if (_difference.has(elem)) {
_difference.delete(elem);
} else {
_difference.add(elem);
}
}
return _difference;
}
function difference(setA, setB) {
const _difference = new Set(setA);
for (const elem of setB) {
_difference.delete(elem);
}
return _difference;
}
// ์์
const setA = new Set([1, 2, 3, 4]);
const setB = new Set([2, 3]);
const setC = new Set([3, 4, 5, 6]);
isSuperset(setA, setB); // true ๋ฐํ
union(setA, setC); // Set {1, 2, 3, 4, 5, 6} ๋ฐํ
intersection(setA, setC); // Set {3, 4} ๋ฐํ
symmetricDifference(setA, setC); // Set {1, 2, 5, 6} ๋ฐํ
difference(setA, setC); // Set {1, 2} ๋ฐํ
๋ฐฐ์ด๊ณผ์ ๊ด๊ณ
const myArray = ["value1", "value2", "value3"];
// Set ์์ฑ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ Set์ผ๋ก ๋ณํ
const mySet = new Set(myArray);
mySet.has("value1"); // returns true
// ์ ๊ฐ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ set์ ๋ฐฐ์ด๋ก ๋ณํ
console.log([...mySet]); // Will show you exactly the same Array as myArray
๋ฐฐ์ด์์ ์ค๋ณต ์์ ์ ๊ฑฐํ๊ธฐ
// ๋ฐฐ์ด์์ ์ค๋ณต ์์๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ์ฌ์ฉ
const numbers = [2, 13, 4, 4, 2, 13, 13, 4, 4, 5, 5, 6, 6, 7, 5, 32, 13, 4, 5];
console.log([...new Set(numbers)]); // [2, 13, 4, 5, 6, 7, 32]
๋ฌธ์์ด๊ณผ์ ๊ด๊ณ
// ๋์๋ฌธ์ ๊ตฌ๋ฌธ (set์ "F"์ "f"๋ฅผ ๋ชจ๋ ๊ฐ์ง๊ฒ ๋จ)
new Set("Firefox"); // Set(7) [ "F", "i", "r", "e", "f", "o", "x" ]
// ์ค๋ณต ๋ฌธ์์ด์ ์๋ต ("f"๋ ๋ฌธ์์ด์์ 2๋ฒ ๋ํ๋๊ธฐ์, set์ ํ๋๋ง ๊ฐ์ง๊ฒ ๋จ)
new Set("firefox"); // Set(6) [ "f", "i", "r", "e", "o", "x" ]
Set๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๋ชฉ๋ก์ ๊ณ ์ ์ฑ์ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ
const array = Array.from(document.querySelectorAll("[id]")).map((e) => e.id);
const set = new Set(array);
console.assert(set.size === array.length);
๋ช ์ธ์
Specification |
---|
ECMAScriptยฎ 2026 Language Specification # sec-set-objects |
๋ธ๋ผ์ฐ์ ํธํ์ฑ
Loadingโฆ