0

How can I sum divided into an array digits of a specified number to one whole, e.g. 28 => 2 + 8 => 1?

const addDigits = (num) => {

let str = num.toString();
let sum = str.split('');

  for (let i = 0; i < str.length; i += 1) {
    sum = parseInt(str.charAt(0) + str.charAt(i));

  }
  return sum;
}
Markus
  • 15
  • 5

1 Answers1

1

You can use reduce:

const addDigits = num => {
  let sum = num.toString();
  while (sum.length > 1) {
    sum = sum.split('')
             .reduce((sum, n) => sum + parseInt(n, 10), 0)
             .toString();
  }
  return sum; // or parseInt(sum, 10); if you want a number
};


console.log(addDigits(12345)); // 1 + 2 + 3 + 4 + 5 === 15 -> 1 + 5 === 6
console.log(addDigits(123));   // 1 + 2 + 3 === 6
console.log(addDigits(28));    // 2 + 8 === 10 -> 1 + 0 === 1
blex
  • 24,941
  • 5
  • 39
  • 72