728x90
Set이란?
JS의 내장 객체 중 하나인 Set은 고유한 값을 저장하는데 사용되는 자료구조다.
그래서 중복된 값을 허용하지 않으며, 순서를 보장하지 않는다는 특징이 있다.
간단 설명
const set = new Set();
Set 클래스의 생성자 함수를 호출해 Set 인스턴스를 생성한다.
생성된 Set 인스턴스는 Set의 메서드와 프로퍼티를 사용해 여러 작업을 수행할 수 있다.
⭐️ 여기서 클래스, 생성자, 인스턴스가 무엇인지 간단하게 알아보겠다.
- 클래스: 객체 지향 프로그래밍에서 객체를 생성하기 위한 템플릿. (붕어빵 틀 같은 거임) 객체의 상태나 행동을 정의하는 설계도로 클래스는 속성(데이터)와 메서드(동작)을 포함하고 있다.
- 생성자: 클래스로부터 객체를 만들 때 호출하는 메서드로, 객체가 생성될 때 실행돼 객체의 상태를 초기화하고 필요한 설정을 수행한다. JS에서 생성자 함수는 클래스와 이름이 일치하며, constructor라는 메서드로 정의된다. 생성자 함수는 new 키워드와 함께 호출돼 객체의 인스턴스를 생성한다.
- 인스턴스: 클래스 생성자를 호출해 실제로 메모리에 할당된 객체. 클래스의 인스턴스는 클래스의 템플릿에 따라 생성되며 클래스에 정의된 속성과 메서드에 접근할 수 있는 독립적인 객체
매우 간략하게 설명해보았으나 여전히 내용은 간단하지 않다.
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
walk() {
console.log(this.name + ' is walking.');
}
talk() {
console.log(this.name + ' is talking.');
}
}
// 'Person' 클래스의 인스턴스 생성
const person1 = new Person('John', 25);
const person2 = new Person('Jane', 30);
person1.walk(); // 출력: John is walking.
person2.talk(); // 출력: Jane is talking.
여기서 Person은 클래스(틀)이다. constructor 메서드는 객체의 속성을 초기화 하고 있다. (name, age)
this는 현재 실행중인 메서드나 함수가 속한 객체를 참조하는데 사용된다. (자세한 것은 더 알아보겠다...)
walk() talk()는 Person 클래스의 메서드다.
person1, person2는 Person 클래스의 인스턴스로, 클래스(틀)을 기반으로 만들어진 객체다.
이런 방식으로 코드를 좀 더 구조화하고 재사용성이나 유지보수성을 높일 수 있다고 한다.
사용 방법
위에서 말한 것처럼 new Set() 구문으로 Set을 생성한 후 값을 추가하고 크기를 확인하는 등 여러 메서드와 프로퍼티에 대해서 알아보자.
- add() 메서드: Set에 값을 추가하기 위해 사용된다.
set.add(1);
set.add(2);
set.add(3);
set.add(1); // 이미 존재하는 값이므로 추가되지 않음
- Size 프로퍼티: Set의 크기를 확인하기 위해 사용된다.
console.log(set.size); // 3
- delete() 메서드: Set에서 값을 제거하기 위해 사용된다.
set.delete(2);
console.log(set.size); // 2
- has() 메서드: Set에 특정 값이 있는지 확인하기 위해 사용된다.
console.log(set.has(3)); // true
console.log(set.has(2)); // false
- Set의 값을 순회하기 위해 forEach() 메서드나 for...of 루트를 활용할 수 있다.
set.forEach(value => console.log(value));
for (const value of set) {
console.log(value);
}
Set과 Hash와 관련이 있다고 들었는데 이 부분도 공부해봐야겠다...
정말 매일 매일 매일 할 것들이 쏟아지는 삶 🤯
728x90
'🖥️ CS & Network & Web > 🎮 CS' 카테고리의 다른 글
[CS] 힙(Heap)을 알아보자 (0) | 2023.06.16 |
---|---|
[CS] Hash Table을 알아보자 (0) | 2023.06.08 |
[CS] 선형 검색 알고리즘과 이진 검색 알고리즘을 알아보자 (0) | 2023.06.08 |
[CS] 시간복잡도와 배열의 기초 개념을 알아보자 (0) | 2023.06.08 |
[CS] Stack 과 Queue 를 알아보자 (0) | 2023.05.24 |