Другие ответы хороши, но, пожалуйста, рассмотрите этот подход, показанный ниже.Если вы новичок в JS, это, безусловно, поможет вам понять краеугольные камни JS, такие как методы его массивов.
- Метод map () создает новый массив с результатами вызова предоставленной функции для каждого элементав вызывающем массиве.
var new_array = arr.map(function callback(currentValue, index, array {
// Return element for new_array
}, thisArg)
Попробуйте использовать веб-сайт REPL, такой как https://repl.it/, чтобы увидеть, что делают эти методы ...
Ниже предлагается мой ответ...
function onlyVowels(array) {
// For every element (word) in array we will...
return array.map((element) => {
// ...convert the word to an array with only characters...
return (element.split('').map((char) => {
// ...and map will only return those matching the regex expression
// (a || e || i || o || u)
// parameter /i makes it case insensitive
// parameter /g makes it global so it does not return after
// finding first match or "only one"
return char.match(/[aeiou]/ig)
// After getting an array with only the vowels the join function
// converts it to a string, thus returning the desired value
})).join('')
})
};
function test() {
var input = ['average', 'exceptional', 'amazing'];
var expected = ['aeae', 'eeioa', 'aai']
var actual = onlyVowels(input)
console.log(expected);
console.log(actual);
};
test()