Проблема: Напишите функцию, которая принимает строку из одного или нескольких слов и возвращает ту же строку, но с перевернутыми словами из пяти или более букв (точно так же, как имя этого Ката). Передаваемые строки будут состоять только из букв и пробелов. Пробелы будут включены только в том случае, если присутствует более одного слова.

Примеры:

spinWords( “Hey fellow warriors” ) => returns “Hey wollef sroirraw” spinWords( “This is a test”) => returns “This is a test”
  1. Основное решение:
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('') })
}

Большое спасибо за чтение!