我有一个函数可以返回所有数字的总和,用于POSITIVE和NEGATIVE数字。
我使用split方法并首先将其转换为字符串,然后使用reduce将它们全部添加。如果数字为负数,则第一个数字应计为负数。
function sumDigits(num) {
var output = [],
sNum = num.toString();
for (var i = 0; i < sNum.length; i++) {
output.push(sNum[i]);
}
return output.reduce(function(total, item){
return Number(total) + Number(item);
});
}
var output = sumDigits(1148);
console.log(output); // --> MUST RETURN 14
var output2 = sumDigits(-316);
console.log(output2); // --> MUST RETURN 4
它没有返回总和,而是返回4592 -1264
我是做得对还是需要使用split
功能?或者有更好的方法吗?
抱歉新手在这里。
答案 0 :(得分:1)
我认为您必须将其视为一个字符串并检查迭代字符串检查&#39; - &#39;当你发现一个抓取两个字符并转换为一个整数推入阵列。然后遍历数组并求它们。当然,你可以随心所欲地做到这一点,根本不用担心将它们推到阵列上。
function sumDigits(num) {
num = num + '';
var output = [];
var tempNum;
var sum = 0;
for (var i = 0; i < num.length; i++) {
if (num[i] === '-') {
tempNum = num[i] + num[i + 1];
i++;
} else {
tempNum = num[i];
}
output.push(parseInt(tempNum, 10));
}
for (var j = 0; j < output.length; j++) {
sum = sum + output[j];
}
return sum;
}
var output = sumDigits(1148);
console.log(output); // --> MUST RETURN 14
var output2 = sumDigits(-316);
console.log(output2); // --> MUST RETURN 4
&#13;