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

spinWords(“Hey fellow warriors”) //returns “Hey wollef sroirraw"
spinWords("This is a test") //returns "This is a test"
spinWords("This is another test") //returns "This is rehtona test"

[Мое решение]

Мне нужно думать просто, как Умное Решение1 :-(

function spinWords(sentence){
  const sentenceArray = sentence.split(' ');
  let result = '';
  sentenceArray.map((str, i) => {
    if (str.length >= 5){
      sentenceArray[i] = str.split('').reverse().join('');
    } else {
      sentenceArray[i] = str;
    }
  result = sentenceArray.join(' ');
  });
return result;
}

[Умное решение1]

Это Решение обновляет Мое Решение.
Я не думал о создании нового метода "массив в карту".
Итак, мне кажется, что мне нужен индекс массива. Но мне не нужно было индексировать массив.

function spinWords(words){
  return words.split(' ').map(function (word) {
    return 
      (word.length > 4) ? word.split('').reverse().join('') : word;
  }).join(' ');
}

[Умное решение2]

Это решение также использует Regex.
\w is Слова. (Соответствует любому символу слова)
{5,}is Quantifier. (Соответствует 5 или более предшествующему токену.)
Итак, слово длиной 5 или более меняет обратную строку.

function spinWords(string){
  return string.replace(/\w{5,}/g, 
    function(w) {return w.split('').reverse().join('')}
  )
}

[Приспособление]