Set 자료형은 ES2015(ES6)에서 처음 도입되었습니다. 배열(Array)과 Set의 가장 큰 차이점은 다음 두 가지로 정리할 수 있습니다.
- 중복 값 허용 여부: 배열은 동일한 값을 여러 번 저장할 수 있지만, Set은 중복된 값을 허용하지 않습니다.
- 요소 접근 방식: 배열은 인덱스(index)를 사용해 특정 요소에 바로 접근할 수 있지만, Set은 인덱스 접근이 불가능합니다. Set의 요소는 삽입된 순서대로만 순회(traverse)할 수 있습니다.
아래 예제 코드를 통해 배열과 Set의 차이를 직접 확인해 보겠습니다.
예제 코드
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.result,.sample {
font-size: 18px;
font-weight: 500;
color: rebeccapurple;
}
.result {
color: red;
}
</style>
</head>
<body>
<h1>Array Vs Set</h1>
<div class="sample"></div>
<div class="result"></div>
<button class="Btn">Convert</button>
<h3>Click on the above button to convert the above array into a set</h3>
<script>
let resultEle = document.querySelector(".result");
let sampleEle = document.querySelector(".sample");
let arr = [2, 3, 4, 2, 3, 4, "A", "A", "B", "B"];
sampleEle.innerHTML = "arr = " + arr;
document.querySelector(".Btn").addEventListener("click", () => {
let set1 = new Set(arr);
resultEle.innerHTML = "set1 = " + [...set1] + "<br>";
});
</script>
</body>
</html>
실행 결과
위 코드를 실행하면 다음과 같은 화면이 출력됩니다.

'Convert' 버튼을 클릭하면 −

배열 arr = [2, 3, 4, 2, 3, 4, "A", "A", "B", "B"]가 new Set()으로 변환되면서 중복된 숫자와 문자가 모두 제거되고, 각 요소가 한 번씩만 남게 됩니다. 이것이 바로 Set이 가진 강력한 특징입니다. 중복 제거가 필요할 때 배열을 Set으로 손쉽게 변환하여 활용할 수 있습니다.