使用Javascript-toString()、parseInt()等创建一个加法函数
我是第一次学习Javascript的新生。这一次,我试图更好地掌握将数字转换为字符串、将它们存储在数组中、将它们转换回数字以及加法的概念 在本作业中,我试图编写一个函数,将数字的各个数字相加 例如,函数取(95)并返回14。或给定(135),则返回9 以下是我目前得到的信息:使用Javascript-toString()、parseInt()等创建一个加法函数,javascript,arrays,split,tostring,parseint,Javascript,Arrays,Split,Tostring,Parseint,我是第一次学习Javascript的新生。这一次,我试图更好地掌握将数字转换为字符串、将它们存储在数组中、将它们转换回数字以及加法的概念 在本作业中,我试图编写一个函数,将数字的各个数字相加 例如,函数取(95)并返回14。或给定(135),则返回9 以下是我目前得到的信息: var addDigits = function(num) { var newNum = num.toString(); newNum = newNum.split(''); var sum = 0; va
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
?你很接近了。但很少有事情发生。不返回任何内容。它用于产生副作用(增加sum
会被认为是传递到forEach
的函数的副作用)。因此,将forEach
设置为变量并不能实现任何功能parseInt
确实返回了一些内容,因此需要将其设置为变量。您还需要将sum
增加解析后的整数加上已有的总和。如果愿意,您可以查看+=
操作符。最后,您需要从函数本身返回一个值!实际上,如果您执行了var added=addDigits(123)
,added
将是未定义的。因此,用return
语句结束它
在您掌握了这一点之后,我建议您研究替换array.forEach
,因为它非常适合这样的问题。var addDigits=function(string){
var addDigits = function(string) {
newNum = string.split('');
var sum = 0;
for(var i = 0 ; i < newNum.length ; i++) sum += parseInt(newNum[i]);
return sum;
};
console.log(addDigits("1234"));
newNum=string.split(“”);
var总和=0;
对于(var i=0;i
也许这样会更好:
function getDigitsSum(number) {
var charArray = (number + '').split('');
var sum = 0;
charArray.forEach(function(item) {
sum += parseInt(item)
})
return sum;
}
Number()
执行类型转换,而parseInt()执行解析。
在这种情况下,这没有什么区别,因为字符串是正确的整数。
我会这样做的
var addDigits = function(num) {
var newNum = num.toString().split('');
var sum = newNum.map(Number).reduce((prev, curr) => prev + curr);
return sum;
};
假设输入始终是一个整数字符串,请考虑以下函数:
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
函数,然后应用中的任何函数。根据累积值减少——在这种情况下,只需针对数组的每个成员添加即可。返回字符串(num | 0)。split('').map(Number).reduce((p,c)=>p+c,0)
这是一个聪明的答案,但对一个新学生来说毫无用处。非常感谢你的解释!我以后一定会研究如何使用array.reduce!!!谢谢你与我分享你的解释!谢谢!你的解释在这里真的帮了我大忙!!非常感谢!我还没有学会reduce方法,我一定会看起来很内敛的哦,谢谢你的回答!