使用Javascript - toString(),parseInt()等进行加法功能

时间:2015-12-05 04:28:34

标签: javascript arrays split tostring parseint

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

5 个答案:

答案 0 :(得分:3)

你非常接近。但是很少有东西。 array.forEach不会返回任何内容。它用于创建副作用(增加sum将被视为您传递到forEach的函数的副作用。因此,将forEach设置为变量并不能完成任何事情。 parseInt会返回一些内容,因此您需要将其设置为变量。并且您还希望通过已解析的整数加上已有的总和来增加sum。如果您愿意,可以查看+=运算符。最后,您需要从函数本身返回一个值!实际上,如果您var added = addDigits(123) addedundefined将是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中的任何函数应用于累积值 - 在这种情况下,只需添加数组的每个成员。