Javascript:为什么我的数字没有被提升到n次幂并被推送到我的阵列?

时间:2017-04-07 07:03:33

标签: javascript

我正在尝试编写一个函数,它接受一个数字并将其数字范围加到第n个幂,但看起来我的函数不正确" n-thing"数组中的每个数字。

这是我的代码:

function sumDigPow(a, b) {
  var premArray = [];
  var squaredArray = [];
  for(var i = a; i <= b; i++){
    premArray.push(i);

  }
  for(var j = 0; j < premArray.length; j++){
      var squared = ('' + premArray[j]).split('').map(function(v, i){
        return Math.pow(parseInt(v), i + 1);
      }).reduce(function(a , v){
          return a + v;
      }, 0);

       squaredArray.push(squared);
    }
}

sumDigPow(5,22);

2 个答案:

答案 0 :(得分:0)

这将返回n连续幂的数字之和

function sumDigPow(a, b) {
  var squared = String(a).split('').map(function(v){
    return Math.pow(parseInt(v), b++);
  }).reduce(function(a , v){
      return a + v;
  });

  return squared;
}

sumDigPow(89,1)=&gt; 89

sumDigPow(695,2)=&gt; 1390

sumDigPow(46288,3)=&gt; 2360688

答案 1 :(得分:0)

你几乎完全复杂了。

function digPow(n, p){
  var total = 0;
  var digits = (""+n).split("");

  for (var i = 0; i< digits.length; i++) {
    total += Math.pow(digits[i], p+i);
  }

  if(total/n % 1 === 0){
    return total/n;
  }

  return -1;
}

这里我们将第一个数字拆分为数组。请注意,如果字符串是数字示例,则字符串时间数可以产生数字:“6”。

所以我们只是拆分它,迭代并计算总结果,之后我们检查结果是否与我们的起始编号(n)分开是否为int并且我们有简单的解决方案。 希望它有所帮助。