Problem
- Return the number (count) of vowels in the given string.
Solution 01
function countVowels(str) {
const vowels = 'aeiouAEIOU';
let count = 0;
for (let i = 0; i < str.length; i++) {
if (!(vowels.indexOf(str[i]) === -1)) {
count += 1;
}
}
return count;
}
countVowels('abcd'); // 1 (a)
countVowels('ABCD'); // 1 (A)
countVowels('code'); // 2 (o, e)
countVowels('CODE'); // 2 (O, E)
indexOf()
: 주어진 값이 처음으로 나타나는 위치를 반환한다. 일치하는 값이 없으면 -1을 반환한다.
Solution 02
function countVowels(str) {
const vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];
let count = 0;
for (let i = 0; i < str.length; i++) {
for (let j = 0; j < vowels.length; j++) {
if (str[i] === vowels[j]) {
count++;
}
}
}
return count;
}
countVowels('abcd'); // 1 (a)
countVowels('ABCD'); // 1 (A)
countVowels('code'); // 2 (o, e)
countVowels('CODE'); // 2 (O, E)
Solution 03
function countVowels(str) {
return str.split('').filter(i => 'aeiouAEIOU'.includes(i)).length;
}
countVowels('abcd'); // 1 (a)
countVowels('ABCD'); // 1 (A)
countVowels('code'); // 2 (o, e)
countVowels('CODE'); // 2 (O, E)
split()
: 문자열을 부분 문자열로 분할하고, 새 배열로 반환한다.filter()
: 테스트를 통과한 배열의 각 값을 모아, 새 배열로 반환한다.includes()
: 특정 값이 있는지 확인하고, true/false를 반환한다.
Solution 04
function countVowels(str) {
return str.replace(/[^aeiouAEIOU]/g, '').length;
}
countVowels('abcd'); // 1 (a)
countVowels('ABCD'); // 1 (A)
countVowels('code'); // 2 (o, e)
countVowels('CODE'); // 2 (O, E)
replace()
: 대응되는 문자열을 찾아 다른 문자열로 치환한다.^
: 입력의 시작 부분에 대응g
: 전역 검색
Solution 05
function countVowels(str) {
return (str.match(/[aeiouAEIOU]/g) || []).length;
}
countVowels('abcd'); // 1 (a)
countVowels('ABCD'); // 1 (A)
countVowels('code'); // 2 (o, e)
countVowels('CODE'); // 2 (O, E)
match()
: 문자열에서 정규식과 일치하는 문자를 검색하고, 배열로 반환한다.