[JavaScript] Set Object

Narcoker·2023년 6월 14일
0

JavaScript

목록 보기
38/55

Set

value의 컬렉션
[value1,,, valueN] 형태로 작성된다.
작성한 순서대로 전개된다. -> [[Entries]] 에 인덱스가 있다.

중복된 값을 허용하지 않는다.

const obj = new Set([
	1,1,2,"ABC"
]);
console.log(`size: ${obj.size}`); // size: 3

for (let value of obj){
	console.log(value);
}    
/*
size: 3
1
2
ABC
*/

Symbol.speices가 있다. -> constructor를 오버라이드 할 수 있다.
Symbol.iterator 가 있다. -> 열거가 가능하다.

Method

Set.add()

Set에 값을 추가한다.
만약 기존에 등록된 값이 있으면 덮어씌운다.

즉, 중복을 허용하지 않는다.

Set.has()

Set 인스턴스에서 값의 존재 여부를 반환한다.

있으면 true, 없으면 false를 반환한다.

Set.entries()

Set 인스턴스로 이터레이터 오브젝트를 생성하고 반환한다.
Set 인스턴스에 설정된 순서로 반환한다.
next()를 사용하면 [value, value] 형태로 반환한다.

const obj = new Set([
	"one", () => {}
]);

const iterObj = obj.entries();

console.log(iterObj.next()); // {value: [one, one], done: false}
console.log(iterObj.next()); // {value: [()=>{}, ()=>{}], done: false}
console.log(iterObj.next()); // {value: undefined, done: true}

Set.keys()

Set 인스턴스의 value를 key로 사용하여 이터레이터 오브젝트 생성하고 반환

const obj = new Set([
	"one", () => {}
]);

const iterObj = obj.keys();

console.log(iterObj.next()); // {value: one, done: false}
console.log(iterObj.next()); // {value: ()=>{}, done: false}
console.log(iterObj.next()); // {value: undefined, done: true}

Set.keys()

Set 인스턴스의 value를 이터레이터 오브젝트 생성하고 반환

const obj = new Set([
	"one", () => {}
]);

const iterObj = obj.values();

console.log(iterObj.next()); // {value: one, done: false}
console.log(iterObj.next()); // {value: ()=>{}, done: false}
console.log(iterObj.next()); // {value: undefined, done: true}

Symbol.iterator()

Set 인스턴스로 이터레이터 오브젝트를 생성하고 반환한다.
Set.values() 와 같다.

const obj = new Set([
	"one", () => {}
]);

const iterObj = obj[Symbol.iterator]();

console.log(iterObj.next()); // {value: one, done: false}
console.log(iterObj.next()); // {value: ()=>{}, done: false}
console.log(iterObj.next()); // {value: undefined, done: true}

Set.forEach()

Set 인스턴스를 반복하면서 callback 함수 호출
Map 과 동일하게 유일한 callback 함수 사용을 허용하는 메서드이다.

const obj = new Set([
	"one", () => {}
]);

function callbalck(value, key, set){
	console.log(`${value}, ${this.check});
}

obj.forEach(callback, {check: "ABC"}); // {check: "ABC"}를 this 바인딩

/*
one, ABC
() => {}, ABC
*/

Set.delete()

Set 인스턴스에서 파라미터 값과 같은 엘리먼트를 삭제한다.

삭제에 성공하면 true를 반환하고 실패하면 false를 반환한다.

Set.clear()

Set 인스턴스에서 모든 엘리먼트를 지운다.

Set 인스턴스 자체를 삭제하는 것은 아니다.
clear() 이후 해당 인스턴스에 값을 추가할 수 있다.

profile
열정, 끈기, 집념의 Frontend Developer

0개의 댓글