[JS] ์๋ฐ์คํฌ๋ฆฝํธ Set ๊ฐ์ฒด์ ์งํฉ ์ฐ์ฐ ๋ฉ์๋ (๊ต์งํฉ, ํฉ์งํฉ ๋ฑ)
TL;DR
๐ก ES6์ ๋์ ๋ Set ๊ฐ์ฒด๋ ์ค๋ณต์ ํ์ฉํ์ง ์๋ ๊ณ ์ ํ ๊ฐ๋ค์ ์ ์ฅํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ค. Set์ ๋์ผํ ๊ฐ์ ๋ ๋ฒ ์ ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ ์ค๋ณต๋ ๊ฐ์ ์ถ๊ฐํ๋ฉด ์๋์ผ๋ก ๋ฌด์ํ๋ค. ๋ํ ์ฝ์ ์์๋ฅผ ๊ธฐ์ตํ๊ณ , ์์ํ๊ณผ ์ฐธ์กฐํ ๊ฐ์ ๋ชจ๋ ์ง์ํ๋ค — ์ฐธ๊ณ ํฌ์คํ
Firefox 127 ๋ฒ์ ๋ถํฐ ๋ณ๋์ ํด๋ฆฌํ ์์ด ํฌ๋กฌ(Chrome)์ ํฌํจํ ๋๋ถ๋ถ์ ์ฃผ์ ๋ธ๋ผ์ฐ์ ์์ง์์ ๊ต์งํฉ, ํฉ์งํฉ, ์ฐจ์งํฉ ๋ฑ ์งํฉ ์ฐ์ฐ์ ์ํํ๋ ์๋ก์ด Set ๋ฉ์๋๋ฅผ ์ง์ํ๋ค. ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ์์ ์ง์ํ๋ ๋ฉ์๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
A.intersection(B)
: ๋ Set์ด ๊ณตํต์ผ๋ก ๊ฐ์ง๋ ์์๋ฅผ ํฌํจํ ์๋ก์ด Set ๋ฐํ — ๊ต์งํฉA.union(B)
: ๋ Set์ด ๊ฐ์ง ๋ชจ๋ ์์๋ฅผ ํฌํจํ ์๋ก์ด Set ๋ฐํ — ํฉ์งํฉA.difference(B)
: A Set์๋ ์์ง๋ง B Set์๋ ์๋ ์์๋ฅผ ํฌํจํ ์๋ก์ด Set ๋ฐํ — ์ฐจ์งํฉA.symmetricDifference(B)
: ๋ Set์ด ๊ณตํต์ผ๋ก ๊ฐ์ง๋ ์์๋ฅผ ์ ์ธํ ์๋ก์ด Set ๋ฐํ — ๋์นญ ์ฐจ์งํฉA.isSubsetOf(B)
: A Set์ ๋ชจ๋ ์์๋ฅผ B Set์ด ํฌํจํ๋์ง ์ฌ๋ถ — A๊ฐ B์ ๋ถ๋ถ ์งํฉ์ธ์ง ์ฌ๋ถA.isSupersetOf(B)
: A Set์ด B Set์ ๋ชจ๋ ์์๋ฅผ ํฌํจํ๋์ง ์ฌ๋ถ — A๊ฐ B์ ์์ ์งํฉ์ธ์ง ์ฌ๋ถA.isDisjointFrom(B)
: ๋ Set์ด ๊ณตํต ์์๋ฅผ ๊ฐ์ง์ง ์๋์ง ์ฌ๋ถ — ์๋ก์ ์งํฉ ์ฌ๋ถ
A.intersection(B) | ๊ต์งํฉ
- ์ค๋ช : ๋ Set์ด ๊ณตํต์ผ๋ก ๊ฐ์ง๋ ์์๋ฅผ ํฌํจํ ์๋ก์ด Set ๋ฐํ
- ๋ฐํ๊ฐ : Set
- ์ํ์ ํ๊ธฐ : ๐ด∩๐ต — A์ B๊ฐ ๋ชจ๋ ๊ฐ์ง๋ ์์
- ์ฐธ๊ณ ๋งํฌ : MDN | ํ์ฉ ์์
const odds = new Set([1, 3, 5, 7, 9]);
const squares = new Set([1, 4, 9]);
console.log(odds.intersection(squares)); // Set(2) { 1, 9 }
A.union(B) | ํฉ์งํฉ
- ์ค๋ช : ๋ Set์ด ๊ฐ์ง ๋ชจ๋ ์์๋ฅผ ํฌํจํ ์๋ก์ด Set ๋ฐํ
- ๋ฐํ๊ฐ : Set
- ์ํ์ ํ๊ธฐ : ๐ด∪๐ต — A์ B์ ๋ชจ๋ ์์
- ์ฐธ๊ณ ๋งํฌ : MDN | ํ์ฉ ์์
const evens = new Set([2, 4, 6, 8]);
const squares = new Set([1, 4, 9]);
console.log(evens.union(squares)); // Set(6) { 2, 4, 6, 8, 1, 9 }
A.difference(B) | ์ฐจ์งํฉ
- ์ค๋ช : A Set์๋ ์์ง๋ง B Set์๋ ์๋ ์์๋ฅผ ํฌํจํ ์๋ก์ด Set ๋ฐํ (A Set์๋ง ์๋ ์์)
- ๋ฐํ๊ฐ : Set
- ์ํ์ ํ๊ธฐ : ๐ดโ๐ต — A์์ B๋ฅผ ๋บ ์์
- ์ฐธ๊ณ ๋งํฌ : MDN | ํ์ฉ ์์
const odds = new Set([1, 3, 5, 7, 9]);
const squares = new Set([1, 4, 9]);
console.log(odds.difference(squares)); // Set(3) { 3, 5, 7 }
A.symmetricDifference(B) | ๋์นญ ์ฐจ์งํฉ
- ์ค๋ช : ๋ Set์ด ๊ณตํต์ผ๋ก ๊ฐ์ง๋ ์์๋ฅผ ์ ์ธํ ์๋ก์ด Set ๋ฐํ
- ๋ฐํ๊ฐ : Set
- ์ํ์ ํ๊ธฐ : (๐ดโ๐ต)∪(๐ตโ๐ด) — A์์ B๋ฅผ ๋บ ์์ + B์์ A๋ฅผ ๋บ ์์
- ์ฐธ๊ณ ๋งํฌ : MDN | ํ์ฉ ์์
const evens = new Set([2, 4, 6, 8]);
const squares = new Set([1, 4, 9]);
console.log(evens.symmetricDifference(squares)); // Set(5) { 2, 6, 8, 1, 9 }
A.isSubsetOf(B) | ๋ถ๋ถ ์งํฉ
- ์ค๋ช : A Set์ ๋ชจ๋ ์์๋ฅผ B Set์ด ํฌํจํ๋์ง ์ฌ๋ถ (A๊ฐ B์ ๋ถ๋ถ ์งํฉ์ธ์ง ์ฌ๋ถ)
- ๋ฐํ๊ฐ : Boolean
- ์ํ์ ํ๊ธฐ : ๐ด⊆๐ต — B๋ A์ ๋ชจ๋ ์์๋ฅผ ๊ฐ์ง
- ์ฐธ๊ณ ๋งํฌ : MDN
// fours๋ evens์ ๋ถ๋ถ ์งํฉ
const fours = new Set([4, 8, 12, 16]);
const evens = new Set([2, 4, 6, 8, 10, 12, 14, 16, 18]);
console.log(fours.isSubsetOf(evens)); // true
// odds์ 2๊ฐ ์์ผ๋ฏ๋ก primes๋ odds์ ๋ถ๋ถ ์งํฉ์ด ์๋
const primes = new Set([2, 3, 5, 7, 11, 13, 17, 19]);
const odds = new Set([3, 5, 7, 9, 11, 13, 15, 17, 19]);
console.log(primes.isSubsetOf(odds)); // false
// A, B ์งํฉ์ด ๋์ผํ๋ค๋ฉด(๋ฑ๊ฐ ์งํฉ) ์๋ก์ ๋ถ๋ถ ์งํฉ
const set1 = new Set([1, 2, 3]);
const set2 = new Set([1, 2, 3]);
console.log(set1.isSubsetOf(set2)); // true
console.log(set2.isSubsetOf(set1)); // true
A.isSupersetOf(B) | ์์ ์งํฉ
- ์ค๋ช : A Set์ด B Set์ ๋ชจ๋ ์์๋ฅผ ํฌํจํ๋์ง ์ฌ๋ถ (A๊ฐ B์ ์์ ์งํฉ์ธ์ง ์ฌ๋ถ)
- ๋ฐํ๊ฐ : Boolean
- ์ํ์ ํ๊ธฐ : ๐ด⊇๐ต — A๋ B์ ๋ชจ๋ ์์๋ฅผ ๊ฐ์ง
- ์ฐธ๊ณ ๋งํฌ : MDN
// evens๋ fours์ ์์ ์งํฉ
const evens = new Set([2, 4, 6, 8, 10, 12, 14, 16, 18]);
const fours = new Set([4, 8, 12, 16]);
console.log(evens.isSupersetOf(fours)); // true
// primes์ 15๊ฐ ์์ผ๋ฏ๋ก primes๋ odds์ ์์ ์งํฉ์ด ์๋
const primes = new Set([2, 3, 5, 7, 11, 13, 17, 19]);
const odds = new Set([3, 5, 7, 9, 11, 13, 15, 17, 19]);
console.log(odds.isSupersetOf(primes)); // false
// A, B ์งํฉ์ด ๋์ผํ๋ค๋ฉด(๋ฑ๊ฐ ์งํฉ) ์๋ก์ ์์ ์งํฉ
const set1 = new Set([1, 2, 3]);
const set2 = new Set([1, 2, 3]);
console.log(set1.isSupersetOf(set2)); // true
console.log(set2.isSupersetOf(set1)); // true
A.isDisjointFrom(B) | ์๋ก์
- ์ค๋ช : ๋ Set์ด ๊ณตํต ์์๋ฅผ ๊ฐ์ง์ง ์๋์ง ์ฌ๋ถ (์๋ก์ ์ฌ๋ถ)
- ๋ฐํ๊ฐ : Boolean
- ์ํ์ ํ๊ธฐ : ๐ด∩๐ต=∅ — A, B ๊ณตํต ์์ ์์
- ์ฐธ๊ณ ๋งํฌ : MDN
// primes, squares ๊ณตํต ์์๊ฐ ์์ผ๋ฏ๋ก ์๋ก์
const primes = new Set([2, 3, 5, 7, 11, 13, 17, 19]);
const squares = new Set([1, 4, 9, 16]);
console.log(primes.isDisjointFrom(squares)); // true
// 4, 9, 16 ๊ณตํต ์์๋ฅผ ๊ฐ์ง๋ฏ๋ก ์๋ก์ ์๋
const composites = new Set([4, 6, 8, 9, 10, 12, 14, 15, 16, 18]);
const squares = new Set([1, 4, 9, 16]);
console.log(composites.isDisjointFrom(squares)); // false
๋ ํผ๋ฐ์ค
๊ธ ์์ ์ฌํญ์ ๋ ธ์ ํ์ด์ง์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋ฐ์๋ฉ๋๋ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์
'๐ช Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[JS] ์๋ฐ์คํฌ๋ฆฝํธ ์ ๊ท์์ผ๋ก ์ฒ ๋จ์ ๊ตฌ๋ถ์ ์ถ๊ฐํ๊ธฐ (๋จ์ด ๊ฒฝ๊ณ, ์ ํ๋ฐฉํ์)
[JS] ์๋ฐ์คํฌ๋ฆฝํธ ์ ๊ท์์ผ๋ก ์ฒ ๋จ์ ๊ตฌ๋ถ์ ์ถ๊ฐํ๊ธฐ (๋จ์ด ๊ฒฝ๊ณ, ์ ํ๋ฐฉํ์)
2024.07.18 -
[JS] ์๋ฐ์คํฌ๋ฆฝํธ reduce() ๋ฉ์๋ ํ์ฉ ์์ ๋ชจ์
[JS] ์๋ฐ์คํฌ๋ฆฝํธ reduce() ๋ฉ์๋ ํ์ฉ ์์ ๋ชจ์
2024.07.07 -
[Git] RSS ๊ธ ๋ฐํ ์(ํฐ์คํ ๋ฆฌ ๋ฑ) GitHub ์๋ ์ปค๋ฐ ๋ฐฉ๋ฒ
[Git] RSS ๊ธ ๋ฐํ ์(ํฐ์คํ ๋ฆฌ ๋ฑ) GitHub ์๋ ์ปค๋ฐ ๋ฐฉ๋ฒ
2024.07.03 -
[DevTools] ESLint 9 Flat Config + Prettier ์ค์ (TypeScript, React)
[DevTools] ESLint 9 Flat Config + Prettier ์ค์ (TypeScript, React)
2024.06.30