Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript-toString()、parseInt()等创建一个加法函数_Javascript_Arrays_Split_Tostring_Parseint - Fatal编程技术网

使用Javascript-toString()、parseInt()等创建一个加法函数

使用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

我是第一次学习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

你很接近了。但很少有事情发生。不返回任何内容。它用于产生副作用(增加
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方法,我一定会看起来很内敛的哦,谢谢你的回答!