代码之家  ›  专栏  ›  技术社区  ›  Hodorogea Alexandru

求一个数字的所有位数之和Javascript

  •  22
  • Hodorogea Alexandru  · 技术社区  · 10 年前

    我想制作一个小应用程序,它可以计算一个数字的所有位数的总和。

    例如,如果我有一个数字2568,应用程序将计算2+5+6+8,它等于21。最后,它将计算21的位数之和,最终结果为3。

    请帮帮我

    7 回复  |  直到 10 年前
        1
  •  1
  •   Valor_ user3379466    4 年前

    基本上你有两种方法来得到一个整数所有部分的总和。

    • 使用数值运算

      取这个数字,再把10的余数加起来。然后取数字除以10的整数部分。继续。

    var value = 2568,
        sum = 0;
    
    while (value) {
        sum += value % 10;
        value = Math.floor(value / 10);
    }
    
    console.log(sum);
    • 将数字转换为字符串,拆分字符串,得到一个包含所有数字的数组,并对每个部分执行reduce并返回总和。

    var value = 2568,
        sum = value
            .toString()
            .split('')
            .map(Number)
            .reduce(function (a, b) {
                return a + b;
            }, 0);
    
    console.log(sum);

    要返回值,需要将 value

    rezultat.value = sum;
    //      ^^^^^^
    

    function sumDigits() {
        var value = document.getElementById("thenumber").value,
            sum = 0;
    
      while (value) {
          sum += value % 10;
          value = Math.floor(value / 10);
      }
      
      var rezultat = document.getElementById("result");
      rezultat.value = sum;
    }
    <input type="text" placeholder="number" id="thenumber"/><br/><br/>
    <button onclick="sumDigits()">Calculate</button><br/><br/>
    <input type="text" readonly="true" placeholder="the result" id="result"/>
        2
  •  0
  •   yogski    4 年前

    这个使用模9算法的简单方法怎么样?

    function sumDigits(n) {
      return (n - 1) % 9 + 1;
    }