使用tostring和数字方法javascript的数字总和

时间:2017-01-26 01:07:14

标签: javascript tostring

有人可以解释我在这个问题上做错了什么吗?我想使用numtoString方法添加Number变量的总和。我首先将num转换为字符串num = '12345'。然后我循环遍历字符串,将其转换为数字并将其添加到总和中。

var num = 12345;

function sumDigits(num) {     
  var sumOfDigits = 0;     
  num.toString();     
  for(var i = 0; i < num.length; i++){    
    sumOfDigits += Number(num[i]);     
  }     
  return sumOfDigits;    
}

3 个答案:

答案 0 :(得分:2)

您没有将num.toString()的结果分配给任何内容。

var num = 12345;

function sumDigits(num) {
  var sumOfDigits = 0;
  num = num.toString();
  for (var i = 0; i < num.length; i++) {
    sumOfDigits += Number(num[i]);
  }
  return sumOfDigits;
}

console.log(sumDigits(num));

答案 1 :(得分:0)

更新:

您可以使用split,map和reduce分割数组,将其映射为整数,然后使用reduce函数对整数求和。

如果你想将解析移动到reduce中,你可以删除地图,但我喜欢将这些步骤分开。

&#13;
&#13;
var num = 12345;

function sumDigits(num) {     
var sumOfDigits = num
                  .toString()
                  .split('')
                  .map(function(n) { return parseInt(n);})
                  .reduce(function(acc, val) {
                            return acc + val;
                           }, 
                           0
                  );
  return sumOfDigits;

}

var sum = sumDigits(num);
console.log(sum)
&#13;
&#13;
&#13;

答案 2 :(得分:0)

我相信你可以使用这个:

    var num = 12345;
    function sumDigits(num) {
    //empty variable
    var str;
    //check type of the incoming value
    (typeof num == "string") ? str = num : str = num.toString();
    //this is the same with above if you don't know how to use short handed if else 
    /*
        if(typeof num == "string"){
            str = num;
        } else {
            str = num.toString();
        }
    */
    //Array's split Method and a variable which u have create already
    var arr = str.split(''), sumOfDigits = 0;
    for(var i in arr){
        //You should use parseInt() method.
        sumOfDigits += parseInt(arr[i]);
    }
    //return the sum of the digits
    return sumOfDigits;
};
console.log(sumDigits(num));

如果你有未来的问题,请先搜索一下,然后写在这里:)