我正在尝试以增量方式获取每个元素的幂,即对于输入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
的大小(我知道这是因为它会转到一个不存在的索引中)。但是我想知道是否有更好的方法可以工作。谢谢
您只需要使用一个循环。您可以在循环内增加功率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);
一个选项是使用.map
(将一个数组转换为另一个数组),然后使用指数运算符**
。以要迭代的元素的索引(回调的第二个参数)来计算指数应为多大:
var n = [6,9,5];
const powers = n.map((num, i) => num ** (i + 2));
console.log(powers);
尝试一下:
var sqr = [];
var n = [6,9,5];
n.map((v, i) => sqr.push(v ** (i+2)));
console.log(sqr);
了解map
here。
[基本上,map
通过包含参数v
和i
的函数遍历数组中的每个元素。 v
是由map
运行的当前值,i
是该值在数组中的索引。在索引0处,您想对数字求平方,在索引1处对它求立方,并在索引2的幂处乘以4。有一个恒定的变化率,即power = index + 2
。那就是i+2
。其余的应该不言自明。