使用Javascript-toString()、parseInt()等制作加法函数

Making a Addition function using Javascript - toString(), parseInt(), etc

本文关键字:函数 parseInt Javascript-toString 使用      更新时间:2023-09-26

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

您非常接近。不过没什么。array.forEach不返回任何内容。它用于创建副作用(增加sum将被视为传递给forEach的函数的副作用)。因此,将forEach设置为变量并不能完成任何任务。parseInt确实返回了一些内容,因此需要将其设置为一个变量。您还想将sum乘以解析的整数加上您已经得到的和。如果您愿意,可以查看+=运算符。最后,您需要从函数本身返回一个值!事实上,如果你做了var added = addDigits(123),那么added就是undefined。所以用return语句来结束它。

在你掌握了这一点之后,我建议研究array.reduce来代替array.forEach,因为它非常适合这样的问题。

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"));

也许这会更好:

function getDigitsSum(number) {
  var charArray = (number + '').split('');
  var sum = 0;
  charArray.forEach(function(item) {
    sum += parseInt(item)
  })
  return sum;
}

Number()执行类型转换,而parseInt()执行解析
parseInt()和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

假设您的输入始终是一个整数字符串,请考虑以下函数:

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中的任何函数-在这种情况下,只需对数组的每个成员进行加法。