Метод reverse, нужно перевернуть не строку, а каждую букву в слове, с сохранением порядка слов
function revBySep(str, sep) {
return str.split(sep).reverse().join(sep);
}
var str = "I want to become a JavaScript Ninja!";
console.log(revBySep(str, ""));
console.log(revBySep(str, " "));
в первом консоле !ajniN tpircSavaJ a emoceb ot tnaw I - вот тут все корректно как я хочу
во втором должно быть I tnaw ot emoceb a tpircSavaJ !ajniN - вот тут должен получить такой ввывод, подскажите, где я не там свернул)
Ответы (2 шт):
Боюсь, у вас не выйдет обойтись здесь одной функцией. Для второго случая нужно отдельно пройтись по каждому слову:
function revBySep(str, sep) {
return str.split(sep)
.map(word => [...word].reverse().join(''))
.join(sep);
}
var str = "I want to become a JavaScript Ninja!";
console.log(revBySep(str, " "));
Функция написана правильно, но использована неверно.
function revBySep(str, sep) {
return str.split(sep).reverse().join(sep);
}
При вызове, она создает локальную переменную str, которая не имеет никакого отношения к внешней строке. Получила строку - вернула другую строку. Дважды вызывая её - вы никуда не сохраняете результат первого вызова, и получаете два независимых результата от сработвашей функции.
Вместо исходной строки, во второй вызов функции нужно отправить результат вызова первой:
function revBySep(str, sep) {
return str.split(sep).reverse().join(sep);
}
var str = "I want to become a JavaScript Ninja!";
let step_1 = revBySep(str, "");
let step_2 = revBySep( step_1 , " ");
console.log(step_1);
console.log(step_2);