JavaScript Почему в слове "sobaka" при выполнении меняется буква "a" в середине(должна меняться последняя)
нужно в массиве из слов изменить у каждого слова последнюю букву на заглавную.
let words = 'sobaka marsik pesik'
let arrayWords = words.split(' ')
arrayWords = arrayWords.map(function(elem, index) {
let newElem = elem[elem.length-1].toUpperCase()
let res = elem.replace(elem[elem.length-1], newElem)
return elem = res})
console.log(arrayWords)//['sobAka', 'marsiK', 'pesiK']
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
replace работает через регулярки. И явно не так, как вы ожидали... и как минимум вернёт первое попадание в строке (внимательно почитайте документацию: https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/replace это не та "замена", о которой вы подумали)
Лучше вернуть комбинацию в виде "часть строки без последнего символа" + "изменённый последний символ". Первую часть можно получить из slice, вторую - по длине - 1
let words = 'sobaka marsik pesik';
let arrayWords = words.split(' ');
arrayWords = arrayWords.map(function(elem, index) {
return elem.slice(0, -1) + elem[elem.length-1].toUpperCase();
});
console.log(arrayWords)