Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Задачка с символами - сделать заглавными (https://javascript.ru/forum/misc/74681-zadachka-s-simvolami-sdelat-zaglavnymi.html)

MC-XOBAHCK 31.07.2018 12:45

Задачка с символами - сделать заглавными
 
Затыкаю пробелы в основах JS, обнаружил что пропустил тему с символами charAt().
Вроде ничего сложного и легко запоминается, но не могу решить такую простую задачку:

Нужно написать функцию принимающую массив из слов, которая первый символ каждого слова из массива сделает заглавными буквами и вернёт массив строкой.

Пишу код:
function strok(arr) {
    for (let i = 0; i < arr.length; i++) {
        arr[i].charAt(0) = arr[i].charAt(0).toUpperCase();
    }
    return arr.join(' ');
}
console.log(strok(['наша', 'маша', 'громко', 'плачет']));


получаю ошибку.
Покажите пжл, как правильно сделать.

рони 31.07.2018 12:54

MC-XOBAHCK,
charAt это только get, но не set.

рони 31.07.2018 12:55

Цитата:

Сообщение от MC-XOBAHCK
как правильно сделать.

arr[i] = ....

MC-XOBAHCK 31.07.2018 13:51

Спасибо за объяснение!
По началу я завис и ещё попробовал вместо массива переменную прокачать:
function hello(name) {
    name.charAt(0) = name.charAt(0).toUpperCase();
    
    return `Здравствуй, ${name}`;
}
console.log(hello('гость'));


Сдаваться не стал и попробовал добавить переменную : )
function hello(name) {
    let up = name.charAt(0).toUpperCase();
    name.charAt(0) = up;

    return `Здравствуй, ${name}`;
}
console.log(hello('гость'));


Потом ещё раз перечитал ответы и понял смысл написанного.
Геттеры и сеттеры - как раз вчера начал углубляться в эту тему, но нужно некоторое время и практика чтоб всё отложилось. Планирую после освоения get/set начать знакомиться с React, думаю тогда уже можно будет.
Спасибо!

Dilettante_Pro 31.07.2018 15:27

Цитата:

Сообщение от рони
arr[i] = ....

.... = arr[i].charAt(0).toUpperCase() + arr[i].substr(-arr[i].length + 1);

рони 31.07.2018 15:32

MC-XOBAHCK,
function strok(arr) {
    return arr.map(a => (a = [...a], a[0] = a[0].toUpperCase(), a.join(''))).join(' ');
}
console.log(strok(['наша', 'маша', 'громко', 'плачет']));

рони 31.07.2018 15:33

Цитата:

Сообщение от Dilettante_Pro
(-arr[i].length + 1);

:-?
1

Dilettante_Pro 31.07.2018 15:47

рони,
Ну да... Я по складам... Чтобы понятно - где что. Похоже, переборщил...


Часовой пояс GMT +3, время: 19:50.