#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');
Вы неправильно декалировали массив и пропустили назначение значения массива.