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
Solution 06
function removeVowels(str) {
return str.split(/[aeiouAEIOU]/).join('');
}
removeVowels('abcd'); // bcd
removeVowels('ABCD'); // BCD
removeVowels('code'); // cd
removeVowels('CODE'); // CD
split()
: 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.