JavaScript - Set
in JS on 공부, Javascript
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)] //중복 제거한 배열
실무에서는
- 중복제거
- 전체순회할 필요성이 있는 경우
- 값의 유무 판단
할 때 좋음
안좋을때는
- 특정 요소에 접근할 경우
- 인덱스가 필요할