数组元素的增量幂

问题描述 投票:1回答:3

我正在尝试以增量方式获取每个元素的幂,即对于输入x = [6,9,5],我希望我的输出为y = [6², 9³, 5⁴],幂从给定变量p开始。

我的代码:

var sqr = [];
var n = [6,9,5];
var p = 2;
 for (let i = 0; i < n.length; i++) {
      for (let j = p; j < n.length + 1; j++) {
        sqr.push(Math.pow(n[i],j));
        console.log(sqr);
        i++;
     }
return sqr;

它可以工作,但永远不会执行最后一个元素,具体取决于数组和/或p的大小(我知道这是因为它会转到一个不存在的索引中)。但是我想知道是否有更好的方法可以工作。谢谢

javascript arrays loops
3个回答
1
投票

您只需要使用一个循环。您可以在循环内增加功率p

var sqr = [];
var n = [6,9,5];
var p = 2;
for (let i = 0; i < n.length; i++) {    
    sqr.push(Math.pow(n[i],p));    
    p++; 
}
console.log(sqr);

1
投票

一个选项是使用.map(将一个数组转换为另一个数组),然后使用指数运算符**。以要迭代的元素的索引(回调的第二个参数)来计算指数应为多大:

var n = [6,9,5];
const powers = n.map((num, i) => num ** (i + 2));
console.log(powers);

0
投票

尝试一下:

var sqr = [];
var n = [6,9,5];
n.map((v, i) => sqr.push(v ** (i+2)));
console.log(sqr);

了解map here

[基本上,map通过包含参数vi的函数遍历数组中的每个元素。 v是由map运行的当前值,i是该值在数组中的索引。在索引0处,您想对数字求平方,在索引1处对它求立方,并在索引2的幂处乘以4。有一个恒定的变化率,即power = index + 2。那就是i+2。其余的应该不言自明。

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