Object
, Set
, Map
은 JavaScript
에서 데이터를 저장하고 조작하는데 사용되는 자료구조입니다. 이들 자료구조의 차이점은 다음과 같습니다:
Object
: Key-Value 쌍으로 데이터를 저장하는 자료구조입니다. Key는 문자열 또는 Symbol이며, Value는 어떤 타입이든 될 수 있습니다. Object
는 해시 테이블을 기반으로 구현되어 있으며, 데이터에 빠른 접근을 제공합니다. 그러나 Key는 유일해야 하고, 순서가 보장되지 않습니다.
Set
: 유일한 값을 저장하는 자료구조입니다. Set
은 원소의 순서를 유지하고, 중복된 값을 허용하지 않습니다. Set
은 해시 테이블 또는 이중 연결 리스트로 구현될 수 있습니다. Set
은 데이터를 삽입, 삭제, 검색하는데 빠른 성능을 제공합니다.
Map
: Key-Value 쌍으로 데이터를 저장하는 자료구조입니다. Key와 Value는 모두 어떤 타입이든 될 수 있습니다. Map
은 해시 테이블을 기반으로 구현되어 있으며, 순서가 보장되지 않습니다. Map
은 데이터에 빠른 접근을 제공하고, Key의 유일성을 보장합니다.
따라서 이들 자료구조를 선택할 때는 다음과 같은 고려사항이 있습니다:
Set
을 사용하는 것이 적합합니다. 중복을 허용해야 한다면 Object
나 Map
을 사용해야 합니다.Set
보다는 Object
또는 Map
을 사용하는 것이 좋습니다. Set
은 데이터의 삽입 순서를 유지하지만, 검색이나 순회 시 순서를 보장하지 않습니다. Object
와 Map
은 데이터의 순서를 보장하지 않으므로, 순서가 중요한 경우 별도의 처리가 필요합니다.Object
나 Map
이 좋은 선택입니다. Set
도 데이터에 빠른 접근을 제공하지만, Key를 통한 검색이나 수정은 어렵습니다.따라서 특정 상황과 요구사항에 따라 Object
, Set
, Map
중에서 가장 적합한 자료구조를 선택하여 사용해야 합니다.
Map
과 Object
비교Map
과 Object
는 JavaScript에서 키-값 쌍으로 데이터를 저장하는 데 사용되는 자료구조입니다. 그러나 둘 사이에는 몇 가지 중요한 차이점이 있습니다:
키의 타입: Object
는 키로 문자열과 심볼(Symbol)만 사용할 수 있습니다. 반면에 Map
은 키로 모든 데이터 타입을 사용할 수 있습니다. 따라서 Map
은 객체 자체를 키로 사용할 수 있고, 키의 타입에 제한이 없습니다.
요소 순서: Object
는 요소들의 순서가 보장되지 않습니다. 요소들은 추가된 순서와 상관없이 저장되며, 반복 시 순서가 일정하지 않을 수 있습니다. 하지만 Map
은 요소들의 순서가 보존됩니다. Map
은 요소들을 추가한 순서대로 순회할 수 있습니다.
크기 확인: Object
는 요소의 개수를 쉽게 확인할 수 있는 메서드나 속성을 제공하지 않습니다. 반면에 Map
은 size 프로퍼티를 통해 Map
의 크기(요소의 개수)를 확인할 수 있습니다.
상속: Object
는 프로토타입 체인을 통해 상속 관계를 형성할 수 있습니다. 반면에 Map
은 키-값 쌍의 저장을 목적으로 하는 독립된 자료구조로, 상속을 사용하지 않습니다.
이터레이션: Object
는 for...in 문법을 통해 요소들을 이터레이션할 수 있습니다. 그러나 Map
은 for...of 문법 또는 forEach 메서드를 통해 요소들을 이터레이션할 수 있습니다.
성능: Object
와 Map
은 다른 사용 사례에 따라 성능이 다를 수 있습니다. Object
는 일반적으로 해시 테이블을 사용하며, 키-값 쌍의 개수에 따라 성능이 변할 수 있습니다. Map
은 내부적으로 해시 테이블 또는 이중 연결 리스트로 구현되며, 대부분의 상황에서 일관된 성능을 제공합니다.
이러한 차이점을 고려하여 Object
와 Map
중에서 데이터를 저장하고 조작하는데 가장 적합한 자료구조를 선택해야 합니다. 일반적으로는 키의 타입이 제한적이거나 요소 순서가 중요하지 않은 경우에는 Object
를, 키의 타입이 다양하거나 요소 순서가 보존되어야 하는 경우에는 Map
을 사용하는 것이 좋습니다.
일반적으로는 다음과 같은 상황에서 각각의 자료구조가 유리할 수 있습니다:
Object
의 경우:Map
의 경우: