分割数字并将它们全部添加 - JavaScript

时间:2017-06-21 00:37:22

标签: javascript

我有一个函数可以返回所有数字的总和,用于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功能?或者有更好的方法吗?

抱歉新手在这里。

1 个答案:

答案 0 :(得分:1)

我认为您必须将其视为一个字符串并检查迭代字符串检查&#39; - &#39;当你发现一个抓取两个字符并转换为一个整数推入阵列。然后遍历数组并求它们。当然,你可以随心所欲地做到这一点,根本不用担心将它们推到阵列上。

&#13;
&#13;
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;
&#13;
&#13;