πŸ—³οΈ Set

YeonnΒ·2024λ…„ 4μ›” 15일
0

JavaScript

λͺ©λ‘ 보기
22/23
post-thumbnail

πŸ“˜ Set κ°μ²΄λŠ” μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” μœ μΌν•œ κ°’λ“€μ˜ 집합

ꡬ뢄배열Set
λ™μΌν•œ 값을 μ€‘λ³΅ν•˜μ—¬ 포함할 수 μžˆλ‹€.OX
μš”μ†Œ μˆœμ„œμ— μ˜λ―Έκ°€ μžˆλ‹€.OX
인덱슀둜 μš”μ†Œμ— μ ‘κ·Όν•  수 μžˆλ‹€.OX

❓ Set

  • μœ„μ™€ 같은 νŠΉμ§•μ„ ν™œμš©ν•˜μ—¬ 쀑볡 값을 μ—†μ• κ±°λ‚˜ ꡐ집합, 합집합, 차집합, 여집합 등을 κ΅¬ν˜„ν•  λ•Œ μœ μš©ν•˜κ²Œ μ“°μž„

βœ”οΈΒ new Set

  • set μƒμ„±μž ν•¨μˆ˜λ‘œ Set 객체 생성
// 인수λ₯Ό μ „λ‹¬ν•˜μ§€ μ•ŠμœΌλ©΄ 빈 객체 생성
const emptySet = new Set();
console.log(emptySet); // Set(0) {}

const set = new Set([1,2,3,3]);

// set은 쀑볡 값을 포함할 수 μ—†μœΌλ―€λ‘œ 3은 ν•˜λ‚˜λ§Œ μ €μž₯
console.log(set); // Set(3) {1, 2, 3}

// λ°°μ—΄μ˜ 쀑볡 μš”μ†Œ 제거
const only = (arr) => [...new Set(arr)];
console.log(only([1, 1, 2, 3, 5, 5, 3])); // [1, 2, 3, 5]

βœ”οΈΒ set.size

  • set 객체의 μš”μ†Œ 개수λ₯Ό 확인
const set = new Set([1, 2, 3]);

console.log(set.size); // 3

βœ”οΈΒ set.add()

  • set 객체에 μš”μ†Œλ₯Ό μΆ”κ°€
const set = new Set();
set.add(1);

console.log(set); // Set(1) {1}

// add λ©”μ„œλ“œλ₯Ό 연속 ν˜ΈμΆœν•  수 있고, 쀑볡 μš”μ†ŒλŠ” μΆ”κ°€λ˜μ§€ μ•ŠμœΌλ―€λ‘œ λ¬΄μ‹œλœλ‹€.
set.add(1).add(2).add(3).add(1) // Set(3) {1, 2, 3}

βœ”οΈΒ set.has()

  • set 객체에 νŠΉμ • μš”μ†Œκ°€ μžˆλŠ”μ§€ ν™•μΈν•˜μ—¬ λΆˆλ¦¬μ–Έ κ°’ λ°˜ν™˜
const set = new Set([1, 2, 3]);

set.has(2); // true
set.has(6); // false

βœ”οΈΒ set.delete()

  • set κ°μ²΄μ—μ„œ νŠΉμ • μš”μ†Œλ₯Ό μ‚­μ œ ν›„ μ‚­μ œ 성곡 μ—¬λΆ€μ˜ λΆˆλ¦¬μ–Έ 값을 λ°˜ν™˜
const set = new Set([1, 2, 3]);

console.log(set.delete(1)); // true
console.log(set); // Set(2) {2, 3}

βœ”οΈΒ set.clear()

  • set 객체의 λͺ¨λ“  μš”μ†Œλ₯Ό 일괄 μ‚­μ œ ν›„ μ–Έμ œλ‚˜ undefined λ°˜ν™˜
const set = new Set([1, 2, 3]);

set.clear();
console.log(set); // Set(0) {}

βœ”οΈΒ μ΄ν„°λŸ¬λΈ” !

  • for ... of 문으둜 순회 κ°€λŠ₯
  • μŠ€ν”„λ ˆλ“œ 문법 λŒ€μƒ κ°€λŠ₯
  • ꡬ쑰 λΆ„ν•΄ ν• λ‹Ή κ°€λŠ₯
// for ... of
const set = new Set([1, 2, 3]);
for ( value of set ){
	console.log(value); // 1 2 3
}

// μŠ€ν”„λ ˆλ“œ 문법
console.log([...set]); // [1, 2, 3]

// ꡬ쑰 λΆ„ν•΄ ν• λ‹Ή
const [ unique, ...rest ] = set
console.log(unique, rest); // 1 [2, 3]

βœ¨Β μ§‘ν•©

βœ”οΈΒ κ΅μ§‘ν•©: 곡톡 μš”μ†Œλ‘œ ꡬ성

const A = [1, 2, 3];
const B = [1, 3, 6];

const intersection = (a, b) => {
  const setA = new Set(a);
  const setB = new Set(b);
  const interArr = [];
  
  for ( value of setA ){
    if(setB.has(value)) interArr.push(value);
  }
  
  return interArr;
}

console.log(intersection(A, B)) // [1, 3]

βœ”οΈΒ ν•©μ§‘ν•©: 쀑볡 μ—†λŠ” λͺ¨λ“  μš”μ†Œλ‘œ ꡬ성

const A = [1, 2, 3];
const B = [1, 3, 6];

const union = (a, b) => {
  const arr = A.concat(B);
  return [...new Set(arr)];
}

console.log(union(A, B)) // [1, 2, 3, 6]

βœ”οΈΒ μ°¨μ§‘ν•©: A - B( Aμ—λŠ” μ‘΄μž¬ν•˜μ§€λ§Œ Bμ—λŠ” μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μš”μ†Œλ‘œ ꡬ성 )

const A = [1, 2, 3];
const B = [1, 3, 6];

// has ν™œμš©
const differenceHas = (a, b) => {
  const setA = new Set(a);
  const setB = new Set(b);
  let arr = [];
  
  setA.forEach(el => setB.has(el) ? '' : arr.push(el));
  return arr;
}

// delete ν™œμš©
const differenceDelete = (a, b) => {
  const setA = new Set(a);
  const setB = new Set(b);

  setB.forEach(el => setA.delete(el))
  
  return [...setA]
}

console.log(differenceHas(A, B)); // 2
console.log(differenceDelete(A, B)); // 2

0개의 λŒ“κΈ€