[英]How to populate an array with integers from a loop in javascript
我刚刚注册了Codewar,正在尝试第一批产品。 这是问题:
编写一个函数,将数字(x)乘以给定的数字(y)一定次数(n)。 结果将以数组形式返回。 例如。 multipliBy(2,4,6); 输出为:[8、32、128、512、2048、8192]
我相信我的代码是写的,当我执行console.log时,我得到了练习所要求的数组,但它不会让我继续。 谢谢您的帮助,谢谢!
var array = [];
function multiplyBy(x, y, n) {
while (x<2049){
var z = x*y*n;
var x = z;
array.push(z)
}
}
multiplyBy(2,2,2);
console.log(array);
return array;
您在函数之外发生了一些事情,这使其只能运行一次。 确保将所有内容保留在函数中,直到最后一次return
function multiplyBy(x, y, n) {
var array = []; // var this inside your function
for (; n > 0; --n) { // the loop is only supposed to happen n times
x = x * y; // you can reuse this variable (x)
array.push(x);
}
return array; // return statement should be inside your function
}
// example of logging the returned value
console.log(multiplyBy(2, 4, 6)); // [8, 32, 128, 512, 2048, 8192]
您的while
循环也被硬编码为x<2049
,但这并非总是如此,因为它取决于为函数指定的n
参数
它不会让我继续
您发布的代码中有3个问题可能会阻止您继续进行操作,
return array
可能抛出语法错误,因为它在函数外部 multiplyBy
会将新值附加到上一个数组的末尾 2, 4, 6
,但使用2, 2, 2
在你自己的代码 作为最后的提示,尝试进入缩进代码的习惯,这将使您免于以后阅读它的麻烦,因为它使您可以快速查看块的开始和结束位置
您的return
不在函数范围内。 并且所有对multiplyBy
的调用都会填充相同的数组。 而且您的逻辑有缺陷。
大概应该是
function multiplyBy(x, y, n) { var array = []; while (n--) array.push(x *= y) return array; } console.log(multiplyBy(2,4,6));
或者,在ECMAScript 6中,
var multiplyBy = (x, y, n) => Array(n).fill().map(a => x*=y);
ramove最后的return,必须在函数中使用它来返回某些内容,如果不使用该函数将返回undefined。
查看以下内容(单行解决方案):
function multiplyBy(x,y,n) {
return Array.apply(null, new Array(n)).map(function(v, i) { return x * Math.pow(y, i + 1); });
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.