Я пытаюсь написать функцию, которая принимает строку str и возвращает новую строку, состоящую только из гласных в str.
При написании этой функции я прохожу все тесты, за исключением случаев, когда в строке есть гласные буквы с заглавными буквами, потому что в одном тестовом случае я должен пройти с заглавными буквами с заглавными и строчными буквами.
vowelsOnly ("ВЫКЛЮЧИТЕ это"); //"OUiou"
я что-то пропустил?
const vowelsOnly = function (str) {
let vowels = ['a','e','i','o','u']
let newStr = ''
for (let i of str.toLowerCase()) {
if(vowels.includes(i)) {
newStr += i
}
}
return newStr
}
vowelsOnly("hello world"); // "eoo"
vowelsOnly("happy birthday to you"); // "aiaoou"
vowelsOnly("SHOUT it out"); // "OUiou"
vowelsOnly("aieeeeeeeeou"); // "aieeeeeeeeou"
vowelsOnly("nvwlsnlycnsnnts"); // ""
Вам просто нужно обновить свою логику так, чтобы toLowerCase()
вызывался внутри итерации, а не раньше:
for (let i of str) { // Remove toLowerCase() from this line
if(vowels.includes(i.toLowerCase())) { // Place toLowerCase() here
newStr += i // The character "i" retains original case
}
}
Это означает, что вы не изменяете возвращаемые данные, что сохранит регистр в вашем результате:
const vowelsOnly = function(str) {
let vowels = ['a', 'e', 'i', 'o', 'u']
let newStr = ''
for (let i of str) {
if (vowels.includes(i.toLowerCase())) {
newStr += i
}
}
return newStr
}
console.log(vowelsOnly("hello world")); // "eoo"
console.log(vowelsOnly("happy birthday to you")); // "aiaoou"
console.log(vowelsOnly("SHOUT it out")); // "OUiou"
console.log(vowelsOnly("aieeeeeeeeou")); // "aieeeeeeeeou"
console.log(vowelsOnly("nvwlsnlycnsnnts")); // ""
Другой вариант - использовать регулярное выражение - сопоставить любой символ, который не является гласным, и заменить его пустой строкой:
const vowelsOnly = str => str.replace(/[^aeiou]/gi, '');
console.log(
vowelsOnly("hello world"), // "eoo"
vowelsOnly("happy birthday to you"), // "aiaoou"
vowelsOnly("SHOUT it out"), // "OUiou"
vowelsOnly("aieeeeeeeeou"), // "aieeeeeeeeou"
vowelsOnly("nvwlsnlycnsnnts") // ""
);