Индексом единым?
JavaScript. Задача состояла в том, что б слова из строки 5ти букв и больше функция перекручивала наоборот. Например строку: in god we trust должно превратить в in god we tsurt
Был написан такой код:
function spinWords(str){
str = str.split(' ');
for (let word of str){
if (word.length > 4) {
word = word.split('').reverse().join('')
}
}
return str.join(' ')
}
Главный вопрос: почему он не работает? причем его аналог с индексацией работает отлично.
Вот рабочий код с индексами:
function spinWords(str){
str = str.split(' ');
for (let i=0; i<str.length; i++){
if (str[i].length > 4) {
str[i] = str[i].split('').reverse().join('')
}
}
return str.join(' ')
}
Ответы (1 шт):
Автор решения: teran
→ Ссылка
Вы строку разбили на слова и работаете с каждым отдельным словом. Причем не именно словом, а его копией. Поэтому изменения в массиве не отражаются. Когда вы по индексу изменяете строку в массиве, тут все корректно.
const txt = "in god we trust";
let result = txt.split(' ')
.map(w => w.length < 5 ? w : w.split('').reverse().join(''))
.join(' ');
console.log(result);