@Antonio09

Это костыльное решение?

если да, то как можно иначе

https://jsfiddle.net/d9qufp4h/
  • Вопрос задан
  • 112 просмотров
Решения вопроса 2
miraage
@miraage
Лаконично-читабельный вариант
let num = 123456;

let sum = String(num)
	.split('')
  .reduce((acc, cur) => acc + Number(cur), 0)
  
alert(sum);


Если числа очень длинные и нужен максимальный перформанс (очень редкий кейс)
let num = 123456;
let sum = 0;

let str = String(num);
for (let i = 0; i < str.length; i++) {
	sum += Number(str[i]);
}
  
alert(sum);
Ответ написан
hzzzzl
@hzzzzl
да, потому что надо циклом
(что если num = 234798759827349721394797521973 ?)

s = String(123456)
sum = 0
for(n in s) { 
  sum = sum + +n   // +n = Number(n)
}
// sum = 15
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Seasle
@Seasle Куратор тега JavaScript
\( ゚ヮ゚)/
const sumDigits = number => [...number.toString()].reduce((total, value) => (total + Number(value)), 0);

sumDigits(123); // 6
sumDigits(BigInt(Number.MAX_SAFE_INTEGER) ** 2n); // 142

Тесты.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Sportrecs Москва
от 150 000 до 200 000 ₽