Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 문자열을 객체로 변환하는 방법

문자열을 첫 번째이자 유일한 인수로 받아, 해당 문자열에 포함된 고유한(unique) 문자들을 키로 가지는 객체를 생성하는 함수를 작성해야 합니다. 이때 각 키의 값은 기본적으로 0으로 설정됩니다.

예를 들어 다음과 같습니다.

// 입력 문자열이 다음과 같다면:
const str = 'hello world!';
// 출력 결과는 다음과 같아야 합니다:
const obj = {"h": 0, "e": 0, "l": 0, "o": 0, " ": 0, "w": 0, "r": 0, "d": 0, "!": 0};

그럼 이 함수의 코드를 직접 작성해 보겠습니다.

구현 아이디어

핵심 로직은 매우 간단합니다.

  • split("")을 사용해 문자열을 개별 문자로 이루어진 배열로 분리합니다.
  • reduce() 메서드로 배열을 순회하면서 빈 객체({})에 각 문자를 키로 추가하고 값을 0으로 지정합니다.
  • 동일한 문자가 여러 번 나타나도 객체 키의 특성상 자동으로 중복이 제거되므로, 자연스럽게 고유 문자만 남게 됩니다.

예제 코드

const str = 'hello world!';

const stringToObject = str => {
    return str.split("").reduce((acc, val) => {
        acc[val] = 0;
        return acc;
    }, {});
};

console.log(stringToObject(str));
console.log(stringToObject('is it an object'));

출력 결과

콘솔에 출력되는 결과는 다음과 같습니다.

{ h: 0, e: 0, l: 0, o: 0, ' ': 0, w: 0, r: 0, d: 0, '!': 0 }
{ i: 0, s: 0, ' ': 0, t: 0, a: 0, n: 0, o: 0, b: 0, j: 0, e: 0, c: 0 }

'hello world!'의 경우 길이가 12글자지만, 중복된 문자('l'은 3번, 'o'는 2번 등장)가 하나의 키로 병합되어 최종적으로 9개의 고유 키만 객체에 존재하는 것을 확인할 수 있습니다.

마무리

이처럼 split()reduce()를 조합하면 단 몇 줄의 코드로 문자열을 문자별 객체로 손쉽게 변환할 수 있습니다. 이 패턴은 문자 빈도수 계산, 아나그램 검사 등 다양한 문자열 처리 문제의 기초로 활용되므로 꼭 익혀두면 유용합니다.