【问题标题】:Javascript: How can I loop through a multi-digit number and find the consecutive digit ^ n of each?Javascript:如何遍历一个多位数字并找到每个数字的连续数字 ^ n?
【发布时间】:2017-04-07 05:00:56
【问题描述】:

例如,假设我有数字 345。如何在 javascript 中循环遍历数字中的每个数字并将其提高到连续的 n 次方:即 3^1 + 4^2 + 5^3?

【问题讨论】:

  • 你有没有尝试解决它?

标签: javascript


【解决方案1】:

使用String.prototype.split()Array.prototype.reduce() 计算总和:

let x = String(345).split('').reduce((a, v, i) => a + Math.pow(v, i + 1), 0);

console.log(x); // 144

如果您想要将连续的幂作为数组而不是计算总和,请使用 Array.prototype.map()

let a = String(345).split('').map((v, i) => Math.pow(v, i + 1));

console.log(a); // [3, 16, 125]

【讨论】:

    【解决方案2】:

    这会将数字转换为字符串,将其拆分为数字,然后将每个数字提高到其索引的幂加一,然后通过加法减少以得到答案:

    ('' + 345).split('').map(function(v, i) {
      return Math.pow(parseInt(v), i+1)
    }).reduce(function(a, v) {
      return a + v
    }, 0)
    

    结果为@​​987654322@

    【讨论】:

      【解决方案3】:

      使用 for() 循环的解决方案

      "use strict";
      
      let number = 345;
      let str = number.toString();
      let answer = 0;
      
      for (let i in str) answer += Math.pow(str[i], Number(i)+1);
      
      console.log(answer);

      【讨论】:

        【解决方案4】:

        试试这个。

        <!DOCTYPE html>
        <html>
        
        <head>
        <script>
            var number = 345;
            var strNum = number.toString();
            var sum = 0;
            for(var i = 0; i < strNum.length; i++ ){
                sum += Math.pow(parseFloat(strNum[i]), i+1);
            }
            console.log(sum);
        </script>
        </head>
        
        </html>

        【讨论】:

        • 为什么要反复调用strNum.substring(...) 而不是只使用strNum[i] 访问单个字符?
        • 这也是一个解决方案,我只是开发了一个我想到的逻辑。
        猜你喜欢
        • 2017-06-06
        • 1970-01-01
        • 2015-08-08
        • 1970-01-01
        • 1970-01-01
        • 2021-03-02
        • 1970-01-01
        • 2023-03-15
        • 2016-07-09
        相关资源
        最近更新 更多