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

문자열의 각 문자를 순서대로 대문자로 변환해 배열에 저장하기 - JavaScript

문제 이해하기

문자열을 입력받아 멕시코 웨이브(Mexican Wave) 형태로 변환하는 JavaScript 함수를 작성해야 합니다. 멕시코 웨이브란, 문자열에서 한 번에 한 글자씩 순서대로 대문자로 바꾼 여러 버전의 문자열을 만드는 것을 의미합니다.

예를 들어, 입력 문자열이 다음과 같다면 −

const str = 'edabit';

출력 결과는 각 위치의 문자가 차례대로 하나씩 대문자로 변환된 배열이어야 합니다 −

const output = ["Edabit", "eDabit", "edAbit", "edaBit", "edabIt", "edabiT"];

구현 방법

먼저 문자열의 특정 인덱스에 있는 문자를 다른 문자로 교체하는 replaceAt 헬퍼 함수를 만들고, 이를 String.prototype에 추가합니다. 그다음 map() 메서드를 사용해 각 인덱스마다 해당 위치의 문자를 대문자로 변환한 새로운 문자열을 생성하면 됩니다.

예제 코드

const str = 'edabit';

const replaceAt = function(index, char){
    let a = this.split("");
    a[index] = char;
    return a.join("");
};
String.prototype.replaceAt = replaceAt;

const createEdibet = word => {
    let array = word.split('')
    const res = array.map((letter, i) => {
       let a = word.replaceAt(i, letter.toUpperCase());
       return a;
    });
    return res;
}

console.log(createEdibet(str));

실행 결과

콘솔에는 다음과 같은 결과가 출력됩니다 −

[ 'Edabit', 'eDabit', 'edAbit', 'edaBit', 'edabIt', 'edabiT' ]

코드 설명

replaceAt 함수는 문자열을 split("")으로 문자 배열로 분리한 뒤, 지정된 인덱스의 문자를 교체하고 join("")으로 다시 하나의 문자열로 합칩니다.

createEdibet 함수는 원본 문자열을 문자 단위로 순회하면서, 각 인덱스의 문자를 toUpperCase()로 대문자화한 새로운 문자열을 만들어 배열에 담아 반환합니다. 그 결과 첫 번째 요소부터 마지막 요소까지 대문자 위치가 하나씩 이동하는 멕시코 웨이브 형태의 배열이 완성됩니다.