我创建了一个函数,我希望传递2个参数,并且我将这些数字传递给那些参数,我希望函数不仅存储这2个数字,而且将它们之间的所有数据存储到数组中。这是我的代码:
a = [];
var range = function(start, end) {
for (j=start;j<=end;j++) {
return a.push(j);
return a;
}
}
console.log(range(5, 20));
在这种情况下,我希望它将数字5 - 20存储到我的数组中(a),以便稍后通过另一个函数得到总和。
我上面的代码无效。我做错了什么?
答案 0 :(得分:2)
return
关键字立即中止该功能。将其移到for
循环之外以获得所需的结果。
var a = [];
var range = function(start, end) {
for (j = start; j <= end; j++) {
a.push(j);
}
return a;
}
console.log(range(5, 20));
答案 1 :(得分:0)
完成循环后返回。
var range = function(start, end) {
a = [];
for (j=start;j<=end;j++) {
a.push(j);
}
return a;
}
console.log(range(5, 20));
答案 2 :(得分:0)
正如其他人所指出的,你的主要问题是你在第一次循环迭代后从函数返回。您还返回a.push()
,它返回数组的长度,而不是实际的数组。
更好的解决方案,但不是使用全局变量,只是利用内置的数组原型方法,如下所示:
您可以使用Array(end-start + 1)
创建一个包含所需元素数量的数组。然后,您可以使用Array.apply().map()
映射到数组中的数字,从start
开始,并按数组元素的索引递增。
var range = function(start, end) {
return Array.apply(null, Array(end - start + 1)).map((elem, index) => start + index);
}
console.log(range(5, 20));