개요
JavaScript에서 Set(세트)은 중복되지 않는 값들의 컬렉션입니다. 실무에서는 때때로 Set에 저장된 데이터를 키-값 쌍 형태의 객체로 변환해야 할 필요가 있습니다. 이 글에서는 Object.assign()과 Array.from()을 활용하여 Set을 객체로 손쉽게 변환하는 방법을 알아보겠습니다.
Set을 객체로 변환하기
먼저 다음과 같이 Set을 하나 생성해 보겠습니다.
var name = new Set(['John', 'David', 'Bob', 'Mike']);
이 Set을 객체로 변환하려면 JavaScript의 Object.assign() 메서드를 사용합니다.
var setToObject = Object.assign({}, ...Array.from(name, value => ({ [value]: 'not assigned' })));
동작 원리를 살펴보면, Array.from(name, value => ({ [value]: 'not assigned' }))는 Set의 각 값을 { 키: '기본값' } 형태의 객체로 매핑합니다. 그리고 전개 연산자(...)를 통해 이 객체들을 Object.assign()에 전달하여 빈 객체({})에 하나로 병합하는 구조입니다.
예제 코드
전체 코드는 다음과 같습니다.
var name = new Set(['John', 'David', 'Bob', 'Mike']);
var setToObject = Object.assign({}, ...Array.from(name, value => ({ [value]: 'not assigned' })));
console.log("Set 결과=");
console.log(name);
console.log("객체 결과=");
console.log(setToObject);
실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력합니다.
node fileName.js
여기서는 파일 이름이 demo260.js라고 가정하겠습니다.
실행 결과
코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.
PS C:\Users\Amit\javascript-code> node demo260.js
Set 결과=
Set { 'John', 'David', 'Bob', 'Mike' }
객체 결과=
{
John: 'not assigned',
David: 'not assigned',
Bob: 'not assigned',
Mike: 'not assigned'
}
마무리
이처럼 Object.assign()과 Array.from()을 조합하면 Set의 각 요소를 객체의 키로 변환하고, 원하는 기본값을 함께 할당할 수 있습니다. Set 데이터를 일반 객체 형태로 다루어야 하는 상황에서 유용하게 활용할 수 있는 패턴이니 꼭 기억해 두시기 바랍니다.