본문 바로가기

프론트앤드 수업

[javescript] Symbol 데이터타입 , Set 객체

728x90

새로운 데이터타입
기본형
numbe String null undefined boolean

Symbol() - 추가 // 변경이 불가능하고 똑같은 Symbol을 만들어도 같지않음 ()안은 내용의 설명글이라고 생각
객체의 프로퍼티 키를 고유하게 설정함으로써 프로퍼티 키의 충돌을 방지하기 위해 사용

1) 생성법 -Sysbol함수를 호출함으로써 생성할 수 있음
ex>let sym1 = Symbol('설명문')
let obj = {
name: "green",
age: 30,
}
2) 객체의 키로 사용
let obj = { name: "green", age:20, }
let id = Symbol("id");
obj[id] = 123;
obj에 Symbol("id") : 123 이 추가된다

3) 객체의 숨김 프로퍼티 , 심볼반환법
Object.keys(obj) // 객체의 key를 순차적으로 배열로 반환
Object.values(obj) // 객체의 value값을 순차적으로 배열로 반환
Object.entries(obj) // 객체의 프로퍼티(모든값)을 배열로 반환
Object.assign({목표},복사할객체) 복사한 객체를 목표객체에 복사
Symbol 함수는 숨김함수로 반환되지않는다.(복사는 된다)
Object.getOwnPropertySymbols(객체) 객체의 키중 심볼을 배열로 반환
Reflect.ownKeys(객체) 객체의 키들을 배열로 반환 (심볼타입,문자열타입)

1. 심볼은 수정할 수 없다.

2. 심볼은 똑같은 값이 있어도 고유의 속성을 지녀 중복되지 않는다.

3. 심볼은 숨김 프로퍼티라 values같은 기본 태그로 표출되지 않는다.

참조형
Object / array / function
Set / map - 추가

Set - 중복을 허용하지 않는 값을 모아놓은 컬렉션 (객체임)
객체 - 키가 있는 컬렉션을 저장
배열 - 순서(인덱스)가 있는 컬렉션을 저장
new Set(이터러블)
셋을 생성 합니다. 이터러블 객체(배열)를 전달받으면 그안의 값을 복사해 셋에 넣어줍니다.
set.add(value) 값을 추가
set.delete(value) 값을 제거
set.has(value) 값이 있는지 확인
set.size set에 몇개의 값이 있는지 반환해줌
set.clear() 셋을 비워줌

중복이 없기에 Set으로 한번넣어 배열에 중복을 모두없애고 다시 배열에넣어 중복제거용으로 많이사용

 function unique(arr){
        let set = new Set(arr)
        let result = [...set]
        return result;
    }
    let values = ['Hare', 'Krishna','Hare','Krishna','Krishna','Krishna'
    ,'Krishna','Hare','Hare',':-O'];
    alert(unique(values))

Set 객체에 values를 잠깐 넣었다가 다시 배열에 복사해넣으면 배열의 중복함수가 모두 사라진다.

728x90
댓글