@ravewave

Почему не формируется новая строка из цикла?

Всем привет!
Задача перевернуть каждое слово в строке задом наперед. Почему-то не формируется новая строка newStr, подскажите, что я делаю не так.

const ex = "My favourite game";
    
function wordReverse(str) {
    var newStr = "",
        strLength = str.length;
    for (var i=0; i<strLength; i++) {
        newStr[i] = str[strLength - 1 - i];
    }
    return newStr;
}

function wordsReverse(str) {
    str += " ";
    var wordsReverseArray = [],
        wordStr = "";
    for(var i=0; i<str.length; i++) {
        if(str[i] !== " ") {
            wordStr += str[i];
        } else {
            wordsReverseArray.push(wordReverse(wordStr));
            wordStr = "";
        }
    }
    return wordsReverseArray;
}

console.log(wordsReverse(ex)); // Array(3) [ "", "", "" ]


Спасибо.
  • Вопрос задан
  • 79 просмотров
Решения вопроса 2
Здесь вы правильно конкатенируете (вторая функция wordsReverse):
wordStr += str[i];
А здесь (первая функция wordReverse):
newStr[i] = str[strLength - 1 - i];
пытаетесь присвоить пустой строке символ не выделив для нее место. В C вы получили бы ошибку, так как попытались записать за границы выделенной памяти. Т.е. вам здесь так же нужно слепливать строки:
newStr += str[strLength - 1 - i];
Ответ написан
potapchino
@potapchino
const ex = "My favourite game";
    
function wordReverse(str) {
    var newStr = '',
        strLength = str.length;
      for (var i = 0; i < strLength; i++) {
        newStr += str[strLength - 1 - i];
    }  
    return newStr;
}

function wordsReverse(str) {
    str += " ";
    var wordsReverseArray = [],
        wordStr = "";
    for(var i=0; i<str.length; i++) {
        if(str[i] !== " ") {
            wordStr += str[i];
        } else {
            wordsReverseArray.push(wordReverse(wordStr));
            wordStr = "";
        }
    }
    return wordsReverseArray.join(' ');
}

console.log(wordsReverse(ex)); // "yM etiruovaf emag"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
BRAGA96
@BRAGA96
reverseString('hello, world'); //> "dlrow ,olleh"

function reverseString(string) {
	return string.split('').reverse().join('');
}
Ответ написан
DaFive
@DaFive
const ex = "My favourite game";
console.log(ex.split(' ').map((item) => { return item.split('').reverse().join(''); }).join(' '));

или
var ex = "My favourite game";
console.log(ex.split(' ').map(function(item) { return item.split('').reverse().join(''); }).join(' '));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект