JavaScript - Set


const a = [1,2,3,4,5,1,2,3]
const b = a.reduce((a,v)=>{
  if(a.includes(v)) return a;
  a.push(v);
  return a;
}, []); //원래는 중복을 없애기 위해서는 이렇게 해야 했다.


const c = new Set(a) //자동으로 중복을 배제해준다.

중복을 허용하지 않고, 순서를 보장하는 값들로만 이루어진 리스트.

인덱스가 없지만 순서는 보장되어 있다.

const set = new Set()
set.add(5)

set.size //전체 개수

set.has(5) //5를 가지고 있는지. set은 hashmap으로 작성되어 있어서 빠르게 찾기가 가능하다.

set.delete(5) //5를 지운다.

set.clear() // 다 지운다.

set.entries()

set.keys()

set.values()

위의 세개는 똑같다.

[[]] => 있지만 접근할 수 없는 애들.


const s = new Set([1,2,'1']) //초기에 바로 넣을 수 있음

new Set([...s]) //가능

const map = new Map() //key와 value로 묶여진 것들
map.set('a',1).set('b',2).set({},3) //key로는 모든 걸로 다 올 수 있다.
const set2 = new Set([...map])
const set3 = new Set(map) //그냥 iterable한 모든 객체가 올 수 있다.
console.log(set2)

iterable Object : array, string, map, set

set.forEach(function(key, value, ownerSet){
  console.log(key, value, this)
}, {})

set은 key가 곧 value이다.

const arr = [1,2,3,4]
const newArr = [...new Set(arr)] //중복 제거한 배열 

실무에서는

  1. 중복제거
  2. 전체순회할 필요성이 있는 경우
  3. 값의 유무 판단

할 때 좋음

안좋을때는

  1. 특정 요소에 접근할 경우
  2. 인덱스가 필요할