将数字的数字加在一起并返回总和[关闭]

问题描述 投票:0回答:4

我需要帮助的家庭作业问题。

我必须找到加在一起的数字的总和。

function getSumOfDigits(num) {
    //What goes here?
}

console.log(getSumOfDigits(42), '<-- should be 6');

console.log(getSumOfDigits(103), '<-- should be 4');

答案应该是基本的,因为这是初学javascript。

javascript digits
4个回答
3
投票

将数字转换为toStringsplitreduce数组的字符串:

function getSumOfDigits(num) {
  return [...num.toString()].reduce((acc, curr) => +acc + +curr);
}

console.log(getSumOfDigits(42));
console.log(getSumOfDigits(103));

2
投票

您可以将数字除以10并使用模数10来提取最后一位数:

function getSumOfDigits(num) {
    let sum = 0;
    while (num > 0) {
        sum += (num % 10);
        num = Math.floor(num / 10);
    }
    return sum;
}

console.log(getSumOfDigits(42))
console.log(getSumOfDigits(102))

2
投票

你可以模数(%)10得到最后一位数。然后,将该数字加到sum。添加到sum后,从值中修剪最后一位数。

var value = 123456,
    sum = 0;

while (value) {
    sum += value % 10;
    value = Math.floor(value / 10);
}

console.log(sum);

1
投票

您可以使用递归方法,通过从每次调用的num中取出最后一个数字并添加它来调用从0到n-1的整数之和(其中n是数字中的位数)

见下面的例子:

const getSumOfDigits = num => 
  num < 10 ? num : num%10 + getSumOfDigits(~~(num / 10))

console.log(getSumOfDigits(42), '<-- should be 6');
console.log(getSumOfDigits(103), '<-- should be 4');

上面的函数就像这样,对于这个例子,我将输入num为103:

getSumOfDigits(103) = 3 + getSumDigits(10)

getSumOfDigits(10) = 0 + getSumDigits(1)

getSumDigits(1) = 1 // base case hit

一旦我们打了一个getSumDigits的电话,这个电话再也没有给getSumDigits打电话,我们已经打到我们的基本情况,因此可以开始计算我们以前的电话。从而自下而上地工作:

getSumDigits(1) = 1

getSumOfDigits(10) = 0 + getSumDigits(1) 1 = 1

getSumOfDigits(103) = 3 + getSumDigits(10) 1 = 4 

因此,返回的结果将是4,如上所示。

© www.soinside.com 2019 - 2024. All rights reserved.