반응형
이번 포스팅에서는 JavaScript의 내장 객체 중 하나인 Set 객체에 대하여 공부를 해보고자 한다.
Set이란
JavaScript에서 Set은 중복되지 않는 값들의 집합을 나타내는 내장 객체이다.
Set 객체는 원시 값과 객체 참조를 모두 포함할 수 있다.
Set 객체는 값의 순서를 유지한다.
이는 값들이 추가된 순서에 따라 반복될 때 그 순서대로 나타난다는 것을 의미한다.
Set은 값의 삽입 순서에 따라 요소를 반복하기 때문에 정렬된 집합을 유지하려면 별도의 정렬 작업이 필요하다.
Set 객체는 주로 중복을 허용하지 않아야 하는 값들의 집합을 다룰 때 유용하다.
Set 객체의 주요 특징
- 중복된 값 x
Set 객체는 동일한 값이 중복되지 않도록 보장한다.
따라서 동일한 값을 여러 번 추가하더라도 하나의 값만 유지된다. - 값의 유형에 관계없이 다양한 유형의 값을 포함
Set은 원시 값 (문자열, 숫자, 불리언 등) 뿐만 아니라 객체 참조도 포함할 수 있다. - 요소 추가, 삭제 및 확인
Set 객체는 add( ), delete( ), has( ), clear( ) 메서드를 사용하여 요소를 추가, 삭제 및 확인할 수 있다. - 반복 가능한 객체
Set 객체는 for...of 루프를 통해 반복할 수 있다.
이를 통해 값들을 순차적으로 접근할 수 있다. - 요소 개수와 크기
Set 객체의 요소 개수는 size 속성을 통해 확인할 수 있다.
예시
다음은 Set 객체의 예시 코드이다.
// 빈 Set 객체 생성
const set = new Set();
// 값 추가
set.add('Apple');
set.add('Banana');
set.add('Orange');
// 값 삭제
set.delete('Banana');
// 값 확인
console.log(set.has('Apple')); // true
// 요소 개수
console.log(set.size); // 2
// 반복
for (const item of set) {
console.log(item);
}
출력 결과
true
2
Apple
Orange
Python의 set 과의 차이점
파이썬의 set과 자바스크립트의 Set 사이에는 몇 가지 차이점이 있다.
리터럴 표기법
- 파이썬의 set은 중괄호 { }를 사용하여 표현할 수 있다.
- 예를 들어, my_set = {1, 2, 3}와 같이 표현할 수 있다.
- 반면 JavaScript의 Set은 new Set( ) 생성자를 사용하여 생성해야 한다.
정렬
- 파이썬의 set은 값의 순서를 유지하지 않는다.
- 집합의 요소들은 자동으로 정렬되거나 추가된 순서에 따라 나열되지 않는다.
- JavaScript의 Set은 값의 순서를 유지한다.
- 즉, 값을 추가한 순서대로 반복된다.
반복 가능한 객체
- 파이썬의 set은 반복 가능한 객체이다.
- 따라서 for 루프를 사용하여 set의 요소에 접근할 수 있다.
- JavaScript의 Set 역시 반복 가능한 객체이다.
- for...of 루프를 사용하여 Set의 요소에 접근할 수 있다.
타입 제한
- 파이썬의 set은 다양한 데이터 유형의 요소를 포함할 수 있다.
- 숫자, 문자열, 튜플, 집합 등을 포함할 수 있다.
- JavaScript의 Set은 모든 유형의 값(원시 값 및 객체 참조)을 포함할 수 있다.
요소 접근
- 파이썬의 set은 in 키워드를 사용하여 요소의 존재 여부를 확인할 수 있다.
- JavaScript의 Set은 has( ) 메서드를 사용하여 요소의 존재 여부를 확인할 수 있다.
요소 삭제
- 파이썬의 set은 remove( ) 또는 discard( ) 메서드를 사용하여 요소를 삭제할 수 있다.
- JavaScript의 Set은 delete( ) 메서드를 사용하여 요소를 삭제할 수 있다.
이러한 차이점은 두 언어의 문법과 사용 사례에 따라 다르다.
파이썬의 set과 JavaScript의 Set은 각각 해당 언어의 특성과 사용법에 따라 사용되는 내장 객체이다.
반응형
'Front-End > JavaScript' 카테고리의 다른 글
[JavaScript] '===' 연산자 vs '==' 연산자 (0) | 2023.06.14 |
---|---|
[JavaScript] forEach( ) 함수 (0) | 2023.06.14 |
[JavaScript] Handsontable (0) | 2023.06.06 |
[JavaScript] 람다 방식(lambda) (0) | 2023.05.31 |
[JavaScript] this (0) | 2023.05.28 |