Проблема реверсирования слова, состоящего из более чем 5 букв

#javascript

Вопрос:

Поэтому я должен написать код, который берет строку со многими словами, разделенными пробелами, и меняет порядок слов на те, в которых более 5 букв. Вот что я сделал:

 function spinWords(string){
  splitm = string.split(" ");
  for (let i=0; i<splitm.length; i  ) {
    if (splitm[i].length >= 5) {
      splitm[i].split("").reverse().join("");
      }
    }
  }
 

Но это просто не работает, помощь была бы очень признательна, спасибо!!!

Комментарии:

1. splitm[i].split("").reverse().join(""); создает новую строку, которая является обратной, но вы ее нигде не храните.

2. Терминологическая поправка: пробел-это английское название физической клавиши на клавиатуре, вводимая ею «буква» называется пробелом (множественное число: пробелы).

3. Вы не назначаете свою логику, которая действительно работает, переменной или возвращаете ее let output = splitm[i].split("").reverse().join("") // сделайте что-нибудь с выводом console.log(output)

4. Большое спасибо!!!

5. Пожалуйста, прочтите idownvotedbecau.se/itsnotworking

Ответ №1:

Вы могли бы сделать это с помощью этого милого однострочного:

 const spinWords = (str) => str.split(" ").map((word) => (word.length >= 5) ? word.split("").reverse().join("") : word).join(" ");

console.log(spinWords("The quick brown fox jumps over the lazy dog.")); 

Комментарии:

1. Ваше использование .map — лучшая идея, я всегда думаю сначала о сокращении… ;/

Ответ №2:

  • вам нужно просто вернуть значение
 function spinWords(string){
  var splitm = string.split(" ");
  var str = "";
  for (let i=0; i<splitm.length; i  ) {
    if (splitm[i].length >= 5) {
      str  = splitm[i].split("").reverse().join("");
      }
    }
    return str;
  }
console.log(spinWords("hello"))
 

Ответ №3:

ты можешь это сделать

 const spinWords = str => 
  str.split(' ')
    .reduce((s,w)=>[...s, w.length >5?[...w].reverse().join(''):w],[])
    .join(' ');

console.log( spinWords('hi world thisisavery long n not so short example abc olleh') )  

Комментарии:

1. Странное использование .reduce() , но мне это вроде как нравится!

Ответ №4:

Попробуйте это:

 function spinWords(string){
    let splitm = string.split(" ");
    for (let i=0; i<splitm.length; i  ) {
        if (splitm[i].length >= 5) {
            splitm[i] = splitm[i].split("").reverse().join("");
        }
    }
    console.log(splitm );
  }

  spinWords('hi world thisisavery long n not so short example abc olleh');
 

Вы неправильно декалировали массив и пропустили назначение значения массива.