[Подробно]
Напишите функцию, которая принимает строку из одного или нескольких слов и возвращает ту же строку, но с перевернутыми словами из пяти или более букв (точно так же, как имя этого Ката). Переданные строки будут состоять только из букв и пробелов. Пробелы будут добавлены только в том случае, если присутствует более одного слова.
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('')} ) }