Sum Digits of a Number (v2)

Revision 2 of this benchmark created on


Preparation HTML

<script>
function sumDigitsReduce(number) {
  return Math.abs(number).toString().split('').reduce(function(a,b){return +a + +b}, 0);
}

function sumDigitsReduceParseInt(number) {
  return number.toString().split("").reduce(function(sum,n) {
    return n === '-' ? sum : sum+parseInt(n);
  },0);
}

function sumDigitsForEach(number) {
  var str_num = "" + number;
  
  var result = 0;
  str_num.split('').forEach(function(el) {
    var digit = parseInt(el);
    if(isNaN(digit)) {
      return;
    }
    
    result += digit;
  });
  
  return result;
}

function sumDigitsMod(number) {
    var i = 0;
    var sum = 0;
    number = Math.abs(number)
    while(number != 0)
    {
        sum += number % 10
        number = Math.floor(number/10)
    }
    return sum
}

function sumDigitsString(number) {
  number = Math.abs( number ).toString();
  var sum = 0;
  for ( var i = 0; i < number.length; ++i )
    sum += parseInt( number[ i ] );
    
  return sum;
}

function sumDigitsPow(number) {
  var sum = 0;
  number = Math.abs(number);
  for (var i=number.toString().length-1; i>=0; i--) {
    var digit = Math.floor(number/(Math.pow(10,i)));
    sum += digit;
    number -= digit * (Math.pow(10,i));
  }
  return sum;
}
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
sumDigitsReduce
sumDigitsForEach(86753456231315613215641313513216546514564143546516543453126354641516432131346545641123132132454687979871321313109);
ready
sumDigitsReduceParseInt
sumDigitsForEach(86753456231315613215641313513216546514564143546516543453126354641516432131346545641123132132454687979871321313109);
ready
sumDigitsForEach
sumDigitsForEach(86753456231315613215641313513216546514564143546516543453126354641516432131346545641123132132454687979871321313109);
ready
sumDigitsMod
sumDigitsForEach(86753456231315613215641313513216546514564143546516543453126354641516432131346545641123132132454687979871321313109);
ready
sumDigitsString
sumDigitsForEach(86753456231315613215641313513216546514564143546516543453126354641516432131346545641123132132454687979871321313109);
ready
sumDigitsPow
sumDigitsForEach(86753456231315613215641313513216546514564143546516543453126354641516432131346545641123132132454687979871321313109);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.