@Antonio09

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

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

https://jsfiddle.net/d9qufp4h/
  • Вопрос задан
  • 119 просмотров
Решения вопроса 4
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
Ответ написан
Комментировать
@AliceSmith
String(num).split('').reduce((acc, current) => acc + +current, 0)
Ответ написан
Комментировать
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

Тесты.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы