有人可以解释我在这个问题上做错了什么吗?我想使用num
和toString
方法添加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;
}
答案 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中,你可以删除地图,但我喜欢将这些步骤分开。
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;
答案 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));
如果你有未来的问题,请先搜索一下,然后写在这里:)