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

JavaScript에서 숫자 배열을 문자 코드 객체로 매핑하는 방법

문제 이해하기

이번 글에서는 숫자 배열을 입력받아 각 숫자에 대응하는 객체를 생성하는 JavaScript 함수를 작성해 보겠습니다. 요구 사항은 다음과 같습니다.

배열의 각 숫자마다 하나의 객체를 만들어야 하며, 객체의 키(key)는 문자열 형태의 숫자, 값(value)은 해당 숫자에 대응하는 문자가 됩니다. 최종적으로는 이렇게 만들어진 객체들을 담은 배열을 반환하면 됩니다.

해결 방법 1: for 반복문 사용

가장 기본적인 접근 방식은 전통적인 for 반복문을 활용하는 것입니다. 배열을 순회하면서 각 요소에 대해 새로운 객체를 생성하고, String.fromCharCode()로 문자를 변환한 뒤 결과 배열에 추가합니다.

const arr = [67, 84, 98, 112, 56, 71, 82];
const mapToCharCodes = (arr = []) => {
    const res = [];
    for(let i = 0; i < arr.length; i++){
        const el = arr[i];
        const obj = {};
        obj[el] = String.fromCharCode(el);
        res.push(obj);
    };
    return res;
};
console.log(mapToCharCodes(arr));

출력 결과

위 코드를 실행하면 콘솔에 다음과 같이 출력됩니다.

[
    { '67': 'C' },
    { '84': 'T' },
    { '98': 'b' },
    { '112': 'p' },
    { '56': '8' },
    { '71': 'G' },
    { '82': 'R' }
]

해결 방법 2: map() 메서드로 더 간결하게

map() 메서드를 사용하면 위 로직을 훨씬 간결하고 선언적으로 표현할 수 있습니다. 계산된 속성명(computed property name) 문법인 대괄호 []를 활용하면 동적으로 키를 지정할 수 있습니다.

const mapToCharCodes = (arr = []) =>
    arr.map(el => ({ [el]: String.fromCharCode(el) }));

console.log(mapToCharCodes([67, 84, 98, 112]));
// [ { '67': 'C' }, { '84': 'T' }, { '98': 'b' }, { '112': 'p' } ]

핵심 개념: String.fromCharCode()

String.fromCharCode()는 정적(static) 메서드로, UTF-16 코드 유닛 값들을 받아 그에 대응하는 문자열을 반환합니다. 예를 들어 ASCII 코드 기준으로 다음과 같이 동작합니다.

  • 67'C'
  • 84'T'
  • 98'b'
  • 112'p'

객체 키는 항상 문자열로 변환되기 때문에, 숫자 67을 키로 지정하면 실제 저장될 때는 '67'이라는 문자열 키가 됩니다. 이 점만 유의하면 숫자 배열을 문자 코드 객체 배열로 손쉽게 매핑할 수 있습니다.