Taziz
Taziz

Reputation: 73

Javascript splitting negative number and removing negative

I have a problem while I'm trying to split an integer in to digits with negative number let's say -88 converting them to string wound be [-,8 ,8] and my goal is to remove the '-' and add both digits to get 16 but the problem is that negative

Here is my code:

function sumDigits(number) {
    var digits = (""+number).split("");
    var sum = 0;
    for( var i = 0; i < digits.length; i++){

      var test = parseInt(digits[i]);
      sum = sum + test;
      }
    return sum;
    }

Upvotes: 0

Views: 2311

Answers (5)

Thomas Junk
Thomas Junk

Reputation: 5676

Quick and Dirty:

function sumDigits(number){
    number=(number<0)?-number:number;
    return (number+"").split("").reduce(function(o,n){ return o*1+n*1 },"0");
}    

Fiddle

Upvotes: 1

nettux
nettux

Reputation: 5406

Just add this at the start of your function

if (number < 0) {
    number *= -1;
}

As mentioned in at least one other answer

number = Math.abs(number);

will also work

Upvotes: 1

Subash Selvaraj
Subash Selvaraj

Reputation: 3385

function sumDigits(number) {
    number = (number < 0) ? number*-1 : number;
    var digits = (""+number).split("");
    var sum = 0;
    for( var i = 0; i < digits.length; i++){

      var test = parseInt(digits[i]);
      sum = sum + test;
      }
    return sum;
    }

Upvotes: 1

AkshayDandekar
AkshayDandekar

Reputation: 435

Are you looking for the absolute value of the number? Maybe this would work.

function sumDigits(number) {
    number = Math.abs(number);

Upvotes: 2

lyoung
lyoung

Reputation: 427

This works with -88:

   var digits =number + "";
   var sum = 0;
   for( var i = 0; i < digits.length; i++){

      var test = parseInt(digits[i]);

      if(!isNaN(test))
         sum = sum + test;
      }
   }

Upvotes: 1

Related Questions