[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
λ νΌλ°μ€
New JavaScript Set methods | MDN Blog
New JavaScript Set methods are landing across browsers. Learn about sets, how you can use these methods to compare different sets, create new sets with specific properties, and more.
developer.mozilla.org
κΈ μμ μ¬νμ λ Έμ νμ΄μ§μ κ°μ₯ λΉ λ₯΄κ² λ°μλ©λλ€. λ§ν¬λ₯Ό μ°Έκ³ ν΄ μ£ΌμΈμ