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

JavaScript 문자열에서 모음을 1부터 시작하는 인덱스 번호로 바꾸는 방법

문제 이해하기

이번 문제에서는 문자열을 하나 입력받아, 문자열 안에 포함된 모든 모음(a, e, i, o, u)을 자신이 위치한 인덱스 번호(1부터 시작)로 바꾸는 JavaScript 함수를 작성해야 합니다.

예를 들어 문자열의 두 번째 글자가 모음이라면, 그 글자는 숫자 2로 대체되어야 합니다.

코드 구현

다음은 위 문제를 해결하는 전체 코드입니다 −

const str = 'cancotainsomevowels';
const replaceVowels = (str = '') => {
  const vowels = 'aeiou';
  let res = '';
  for(let i = 0; i < str.length; i++){
    const el = str[i];
    if(vowels.includes(el)){  
      res += (i + 1);
    }else{
      res += el;
    };
  };
  return res;
};
console.log(replaceVowels(str));

동작 원리 살펴보기

코드가 어떻게 동작하는지 단계별로 정리하면 다음과 같습니다.

  • 먼저 확인 대상인 모음 문자들을 문자열 vowels에 담아둡니다.
  • for 반복문을 사용해 문자열의 처음부터 끝까지 각 문자를 하나씩 순회합니다.
  • 현재 문자가 vowels에 포함되어 있는지 includes() 메서드로 검사합니다.
  • 모음이라면 현재 인덱스 i에 1을 더한 값(즉, 1부터 시작하는 위치 번호)을 결과 문자열에 이어 붙입니다.
  • 모음이 아니라면 원래 문자를 그대로 결과에 추가합니다.

인덱스는 기본적으로 0부터 시작하기 때문에, 사람이 읽기 편한 1부터 시작하는 번호로 만들려면 반드시 (i + 1)처럼 1을 더해주어야 한다는 점을 기억하세요.

출력 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다 −

c2nc5t78ns11m13v15w17ls

결과를 보면 원래 모음이 있던 자리마다 해당 문자의 위치 번호가 들어간 것을 확인할 수 있습니다. 예를 들어 두 번째 글자 a2로, 다섯 번째 글자 o5로 바뀌었습니다. 시간 복잡도는 문자열을 한 번만 순회하므로 O(n)으로 매우 효율적입니다.