I need to make a function that takes a number and returns sum of it's digits, if the number is negative the first digit should be considered negative when adding numbers, this is what I have:
var arrx = [];
var oper;
var others = 0;
function sumDigits(num) {
// your code here
var y = num.toString();
var c = y.split("");
c.forEach((h) => arrx.push(Number(h)) );
if (num < 0){
oper = -arrx[0];
for (var z = 1; z < arrx.length; z++){
others += arrx[z];
}
return others + oper;
}
return arrx.reduce((a,b) => a+b);
}
sumDigits(1234);
When given negative number, function returns NaN, what's the problem ?
Use optimized and short version of
sumDigits()
function:In case of negative number, the first char is '-' the minus symbol. When you are trying to convert it to number, you are getting
NaN
. After that if you try to addNaN
to any number the result would beNaN
.As a resolution, you need to ignore the first digit if the number is negative.
So, you can make a code change like
and also changing the return in case of negative numbers to
return others;
Following code should work.