iNext10
@iNext10
Web Developing (Front End) Junior

Найти сумму цифр в переменной, как это сделать?

Суть задачи:
Дана строка из 3-х цифр. Найдите сумму этих цифр. То есть сложите как числа первый символ строки, второй и третий.

Мой вариант решения (не работает):
let str = '123';
let res = str[0] + str[1] + str[2];
alert(res);


Что я делаю не так? :(
  • Вопрос задан
  • 119 просмотров
Решения вопроса 3
saboteur_kiev
@saboteur_kiev
build engineer
ну хотя бы так?
let str = '123';
let res = parseInt(str[0]) + parseInt(str[1]) + parseInt(str[2]);
alert(res);
Ответ написан
@faradeifrontend
Использую пробелы для отступов ;)
ты складываешь строки "1" + "2" + "..." и получаешь простую контактенацию.
Приведи строки к числам.
Ответ написан
l3ftoverz
@l3ftoverz Куратор тега JavaScript
Люблю Финский металкор
let str = '123';
let res = +str[0] + +str[1] + +str[2];
alert(res);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
Для чисел с любым количеством цифр:
let str = '123';
let result = str.split('').reduce(function(sum, curr) {return sum + parseInt(curr)}, 0);
alert(result);
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Как уже написали, проблема в том, что «складываете» не числа, а строки (буквы).

Дам плохой совет, не делайте так, eval() лучше никогда не использовать.
Между всеми цифрами вписать по знаку плюса и выполнить получившееся выражение, как будто это JS-код:
let str = '123';
let res = eval(str.split('').join('+'));
Как?

split('') разбивает строку "123" в массив букв ['1', '2', '3']
join('+') наоборот из массива склеивает опять одну строку, используя "+" как разделитель, получается "1+2+3"
eval() выполняет это выражение и возращает результат.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы