Проблема: Напишите функцию, которая принимает строку из одного или нескольких слов и возвращает ту же строку, но с перевернутыми словами из пяти или более букв (точно так же, как имя этого Ката). Передаваемые строки будут состоять только из букв и пробелов. Пробелы будут включены только в том случае, если присутствует более одного слова.
Примеры:
spinWords( “Hey fellow warriors” ) => returns “Hey wollef sroirraw” spinWords( “This is a test”) => returns “This is a test”
- Основное решение:
function spinWords(str){ let string = str; let final = []; let strList = str.split(' '); for(var i = 0; i<strList.length; i++) { if(strList[i].length>4 ){ final.push(strList[i].split('').reverse().join('')); } else{ final.push(strList[i]); } } return final.join(' '); }
2. Использование .map() и тернарного оператора:
function spinWords(words){
return words.split(' ').map(w => w.length < 5 ? w : w.split('').reverse().join('')).join(' ');
}
3. Использование тернарного оператора:
function spinWords(str){
return str.split(' ').map(spinSingleWord).join(' ');
}
function spinSingleWord(word){
return word.length>4 ? word.split('').reverse().join('') : word;
}
4. Использование регулярных выражений:
function spinWords(string){
return string.replace(/\w{5,}/g, function(w) { return w.split('').reverse().join('') })
}
Большое спасибо за чтение!