Я готовился к раунду технического собеседования, и один из практических вопросов, с которыми я столкнулся, касался перестановки гласных в заданной строке. Хотя с логической точки зрения это выглядело достаточно просто, реализация не была… вначале.

Я наткнулся на несколько примеров в Интернете, которые я тоже не мог понять. Поэтому мне пришлось придумать другой способ, и вот мое решение.

function reverseVowels(str){
 
 var vowels = “aeiouAEIOU”;
 
 var vowelsToReverse = [];
 
 for(i = 0 ; i< str.length ; i++){
 if(vowels.indexOf(str[i]) > -1){
 vowelsToReverse.push(str[i]);
 }
 }
 var strArray = str.split(‘’);
 var lastIndex = vowelsToReverse.length — 1;
 for( i = 0 ;i < strArray.length ; i++){
 if(vowels.indexOf(strArray[i]) > -1){
 strArray[i] = vowelsToReverse[lastIndex];
 lastIndex — ;
 }
 }
 if(str !== strArray.join(‘’))
 return strArray.join(‘’);
 else
 return “no vowels to replace”;
}
console.log(reverseVowels("bbb"));
console.log(reverseVowels("hello world"));
console.log(reverseVowels("Output"));

Единственное, что может сбивать с толку, - это использование str.split () и stringArray.join (). Это необходимо, потому что строки javascript неизменяемы и не могут быть заменены на месте, и поэтому массив может помочь выполнить замену гласных.

Надеюсь, это было достаточно легко понять