JavaScript에서 객체 내부의 문자열 타입 속성을 배열 형태로 감싸고 싶다면 Object.keys()와 reduce()를 함께 활용하면 됩니다. 여기에 결과를 이어 붙이기 위한 concat() 메서드까지 조합하면 깔끔하게 처리할 수 있습니다.
동작 원리
Object.keys()는 객체의 모든 키를 배열로 반환하고, reduce()는 각 키를 순회하며 새로운 객체를 만듭니다. 이 과정에서 [].concat(값)을 사용하면 값이 이미 배열인 경우 그대로 유지되고, 문자열처럼 배열이 아닌 경우에는 자동으로 배열로 감싸집니다.
예제 코드
다음은 실제 동작을 확인할 수 있는 코드입니다.
var details = { name: ["John", "David"], age1: "21", age2: "23" },
output = Object
.keys(details)
.reduce((obj, tempKey) =>
(obj[tempKey] = [].concat(details[tempKey]), obj), {})
console.log(output)실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력하면 됩니다.
node fileName.js
여기서는 파일 이름이 demo302.js라고 가정하겠습니다.
실행 결과
프로그램을 실행하면 콘솔에 아래와 같은 결과가 출력됩니다.
PS C:\Users\Amit\javascript-code> node demo302.js
{ name: [ 'John', 'David' ], age1: [ '21' ], age2: [ '23' ] }
출력 결과를 보면 원래 배열이었던 name 속성은 그대로 유지되고, 문자열이었던 age1과 age2는 각각 ['21'], ['23'] 형태의 배열로 성공적으로 변환된 것을 확인할 수 있습니다.