Reputation: 73
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
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");
}
Upvotes: 1
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
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
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
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