我是第一次学习Javascript的新生。这一次,我试图更好地掌握将数字转换为字符串,将它们存储在数组中,将它们转换回数字以及添加数字的概念。
在这个作业中,我试图编写一个函数,它接受一个数字的个别数字并将它们加在一起。
因此,例如,函数将采用(95)并返回14.或者给定(135),将返回9.
这是我到目前为止所得到的:
var addDigits = function(num) {
var newNum = num.toString();
newNum = newNum.split('');
var sum = 0;
var thirdNum = newNum.forEach(function(x) {
parseInt(x);
sum + x };
};
我完全清楚这不是很好的代码,但任何人都可以给我任何提示吗?我应该使用parseInt
还是Number
?
答案 0 :(得分:3)
你非常接近。但是很少有东西。 array.forEach
不会返回任何内容。它用于创建副作用(增加sum
将被视为您传递到forEach
的函数的副作用。因此,将forEach
设置为变量并不能完成任何事情。 parseInt
会返回一些内容,因此您需要将其设置为变量。并且您还希望通过已解析的整数加上已有的总和来增加sum
。如果您愿意,可以查看+=
运算符。最后,您需要从函数本身返回一个值!实际上,如果您var added = addDigits(123)
added
,undefined
将是return
。所以用array.forEach
语句完成它。
在你掌握了这一点之后,我建议调查array.reduce
来替换index.index
,因为它非常适合这样的问题。< / p>
答案 1 :(得分:1)
function getDigitsSum(number) {
var charArray = (number + '').split('');
var sum = 0;
charArray.forEach(function(item) {
sum += parseInt(item)
})
return sum;
}
答案 2 :(得分:1)
也许这会更好:
{{1}}
答案 3 :(得分:1)
Number()
执行类型转换,而parseInt()
执行解析
What is the difference between parseInt() and Number()?
在这种情况下,它没有区别,因为字符串是正确的整数
这是我将如何做到的。
var addDigits = function(num) {
var newNum = num.toString().split('');
var sum = newNum.map(Number).reduce((prev, curr) => prev + curr);
return sum;
};
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
答案 4 :(得分:1)
假设您的输入始终是整数字符串,请考虑以下函数:
var addDigits = function(strInt) {
var int = function(x) {
return parseInt(x,10) //10 is the radix
}
return strInt.split('').map(int).reduce(function(a,b){return a+b});
}
与var int
关联的函数将确保将提供的整数字符串解析为其对应的基数10整数(注意type
中的差异,可以使用Javascript构建的验证 - 在typeof()
函数中)。对于给定字符串中的每个值,返回首先.split
字符串.map
int
函数,然后将.reduce
中的任何函数应用于累积值 - 在这种情况下,只需添加数组的每个成员。