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

JavaScript에서 내장 함수 없이 ASCII 값으로 알파벳 문자 찾기

문제 상황

숫자를 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 해당 숫자에 대응하는 ASCII 알파벳 문자를 반환해야 하며, 만약 그 숫자가 알파벳에 해당하는 ASCII 값이 아니라면 -1을 반환합니다.

여기서 중요한 조건은 String.fromCharCode() 같은 값을 변환하는 내장(빌트인) 함수를 사용할 수 없다는 점입니다.

접근 방법

ASCII 코드 체계에서 소문자 알파벳 'a'부터 'z'는 각각 97부터 122까지의 값에 대응하고, 대문자 'A'부터 'Z'는 65부터 90까지의 값에 대응합니다.

따라서 입력된 숫자가 이 범위 안에 있는지 확인한 뒤, 미리 준비된 알파벳 문자열에서 인덱스를 계산하여 해당 문자를 꺼내면 됩니다. 예를 들어 숫자 98이 들어오면 98 - 97 = 1이므로 알파벳 문자열의 두 번째 문자인 'b'를 반환하게 됩니다.

예제 코드

다음은 위 로직을 구현한 코드입니다 −

const num = 98;
const findChar = (num = 1) => {
    const alpha = 'abcdefghijklmnopqrstuvwxyz';
    if(num >= 97 && num <= 122){
        return alpha[num - 97];
    };
    if(num >= 65 && num <= 90){
        return alpha.toUpperCase()[num - 65];
    };
    return -1;
};
console.log(findChar(num));

출력 결과

b

코드 설명

이 코드의 동작 원리는 다음과 같습니다.

먼저 소문자 알파벳 전체를 담은 문자열을 기준 데이터로 준비합니다. 입력값이 97~122 사이라면 소문자에 해당하므로, 입력값에서 97을 빼면 알파벳 문자열 내의 정확한 인덱스가 계산됩니다.

입력값이 65~90 사이라면 대문자에 해당하며, 이 경우에는 toUpperCase()로 문자열을 대문자로 변환한 뒤 입력값에서 65를 뺀 인덱스로 문자를 찾습니다.

두 범위 어디에도 속하지 않는 숫자라면 유효한 알파벳이 아니므로 -1을 반환합니다.