Set, Map

소밍·2022년 6월 12일
0
post-thumbnail

Set

  • 중복되지 않는 유일한 값들의 집합
  • 배열과 유사하지만
    • 요소 순서의 의미 X
    • 인덱스 요소에 접근 X
    • 동일한 값을 중복 포함할 수 X
let s = new Set('abcdeeeeeee');
console.log(s); // Set(5) {'a', 'b', 'c', 'd', 'e'}

//요소 개수 확인 size
console.log(s.size); // 5

// 요소 추가 add
s.add('f');
console.log(s); // Set(6) {'a', 'b', 'c', 'd', 'e', 'f'}

// 요소 순회 for ...of
for (var variable of s) {
  console.log(variable);
}

// 값이 배열인 경우 
let ss = new Set('abcdeeeeeeeee'.split(''));
console.log(ss); // Set(5) {'a', 'b', 'c', 'd', 'e'}

// 요소 존재 여부 확인 has
console.log(ss.has('a')); //true

// 요소 삭제 delete
ss.delete('b');
console.log(ss); // Set(4) {'a', 'c', 'd', 'e'}

// 요소 일괄 삭제 clear
ss.clear()
console.log(ss); // Set(0) {size: 0}



let a = new Set('abc');
let b = new Set('cde');

// 교집합
let cro = [...a].filter(value => b.has(value))
// 합집합
let union = new Set([...a].concat(...b))
// 차집합
let dif = new Set([...a].filter(x => !b.has(x)));

Map

  • 키와 값의 쌍으로 이루어진 컬렉션
  • 객체와 유사하지만 ✦
    • 이터러블
    • 객체의 키는 문자열 타입으로만 지정해야하지만, Map의 키는 모든 값을 가질 수 있음.
    • 객체는 크기를 사용자가 직접 수동으로 알아내야 하지만, Map은 size를 통해 크기를 쉽게 얻을 수 있음.
  • Map 생성자 함수의 인수로 전달한 이터러블에 중복된 키를 갖는 요소가 존재하면 값이 덮어써짐.
    따라서 Map 객체에는 중복된 키를 갖는 요소가 존재할 수 없음.
let m = new Map();

// 요소 추가 set
m.set('하나', '1');
m.set(1, '하나');
m.set(true, 1);
m.set(false, 0);
//Map(4) {'하나' => '1', 1 => '하나', true => 1, false => 0}

// 요소 취득 get
console.log(m.get('하나')); //1
console.log(m.get(true)); //1

// 요소 존재 여부 확인 has
console.log(m.has('하나')); //true

// 요소 삭제 delete
console.log(m.delete('하나')); //true
console.log(m.has('하나')); //false
console.log(m);//Map(3) {1 => '하나', true => 1, false => 0}

// 요소 개수 확인 size
console.log(m.size);//3

// 요소 일괄 삭제 clear
m.clear(); 
console.log(m); //Map(0) {size: 0}

// let mm = new Map()
// mm.set('하나', m)
// Map(1) {'하나' => Map(3)}
// mm.set('하나', {'one':1, 'two':2})
// Map(1) {'하나' => {…}}

set 요소 순회, 교집합, 차집합, 합집합
map 요소 순회

profile
생각이 길면 용기는 사라진다.

0개의 댓글