removeVowels.js (7kyu 06)

Codewars 알고리즘 풀이


Problem

  • Your task is to write a function that takes a string and return a new string with all vowels removed.
    • 모음이 제거된 새로운 문자열을 반환한다.


Solution 01

function removeVowels(str) {
  const vowels = {
    a: true,
    e: true,
    i: true,
    o: true,
    u: true,
    A: true,
    E: true,
    I: true,
    O: true,
    U: true
  };
  let result = [];
  
  for (let i = 0; i < str.length; i++) {
    if (!vowels[str[i]]) {
      result.push(str[i]);
    }
  }
  return result.join('');
}

removeVowels('abcd');  // bcd
removeVowels('ABCD');  // BCD
removeVowels('code');  // cd
removeVowels('CODE');  // CD
  • push(): 배열의 끝에 새 element를 추가하고, 새로운 길이를 반환한다.
  • join(): 배열의 모든 element를 결합하고, 새 문자열로 반환한다.


Solution 02

function removeVowels(str) {
  const vowels = {
    a: true,
    e: true,
    i: true,
    o: true,
    u: true
  };
  let result = [];
  
  for (let i = 0; i < str.length; i++) {
    if (!vowels[str[i].toLowerCase()]) {
      result.push(str[i]);
    }
  }
  return result.join('');
}

removeVowels('abcd');  // bcd
removeVowels('ABCD');  // BCD
removeVowels('code');  // cd
removeVowels('CODE');  // CD
  • toLowerCase(): 문자열을 소문자로 변환한다.


Solution 03

function removeVowels(str) {
  const vowels = 'aeiouAEIOU';
  let result = '';
  
  for (let i = 0; i < str.length; i++) {
    if (vowels.indexOf(str[i]) === -1) {
      result += str[i];
    }
  }
  return result;
}

removeVowels('abcd');  // bcd
removeVowels('ABCD');  // BCD
removeVowels('code');  // cd
removeVowels('CODE');  // CD
  • indexOf(): 주어진 값이 처음으로 나타나는 위치를 반환한다. 일치하는 값이 없으면 -1을 반환한다.


Solution 04

function removeVowels(str) {
  return str.replace(/[aeiouAEIOU]/g, '');
}

removeVowels('abcd');  // bcd
removeVowels('ABCD');  // BCD
removeVowels('code');  // cd
removeVowels('CODE');  // CD
  • replace(): 대응되는 문자열을 찾아 다른 문자열로 치환한다.
  • g: 전역 검색


Solution 05

function removeVowels(str) {
  return str.replace(/[aeiou]/gi, '');
}

removeVowels('abcd');  // bcd
removeVowels('ABCD');  // BCD
removeVowels('code');  // cd
removeVowels('CODE');  // CD
  • i: 대소문자 구분 없는 검색


Solution 06

function removeVowels(str) {
  return str.split(/[aeiouAEIOU]/).join('');
}

removeVowels('abcd');  // bcd
removeVowels('ABCD');  // BCD
removeVowels('code');  // cd
removeVowels('CODE');  // CD
  • split(): 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.