Метод массива .join
никак не изменяет массив.Возвращает строку соединенных элементов.В вашем фрагменте вы регистрируете исходный resultArray
после вызова на join
, когда вы должны регистрировать результат самого вызова join
:
let input = 'Coding is so great.';
const vowels = ['a', 'e', 'i', 'o', 'u'];
let resultArray = [];
function getVowels(input) {
for (let i = 0; i < input.length; i++) {
for (let j = 0; j < vowels.length; j++) {
if (vowels[j] === input[i]) {
resultArray.push(vowels[j]);
}
}
if (input[i] == 'e') {
resultArray.push(input[i]);
}
if (input[i] == 'u') {
resultArray.push(input[i]);
}
}
console.log(resultArray.join('')); // <-- this is the value you want, not `resultArray`
// console.log(resultArray);
}
getVowels(input);
Если вы действительно хотите изменить resultArray
на строку, вы должны переназначить его:
resultArray = resultArray.join('')
Но я бы не сталрекомендую сделать это.Как правило, вы должны избегать подобных побочных эффектов в своих функциях.Было бы лучше определить resultArray
в пределах getVowels
и вместо этого вернуть полученную строку.