Javascript中的递归函数来填充数组
Recursive function in Javascript to fill Array?
我试图用递归函数中的值范围填充数组,但我看到在返回数组时发生了一件奇怪的事情,尽管数组有值,当我在函数之外提醒它时,它给了我未定义。不确定是我的代码问题还是任何类型的行为。
当我厌倦了使用简单的 for 循环时,同样的实现它工作正常。
我不知道这个问题该给什么标题,请给我一个好的。
JS小提琴
使用递归
var arr = [];
function fillArray(n,i){
if(arr.length !== n){
if(i===0)
arr[i] = i;
else
arr[i] = arr[i-1] + 1;
fillArray(n,++i);
}
else{
console.log(arr);
return arr;
}
}
console.log(fillArray(10,0));
带 for 循环
var arr = [];
function fillArray(start,end){
for(var i=start,j=0;i<=end;i++,j++){
arr[j] = i;
}
return arr;
}
alert(fillArray(1,10));
function fillArray(n, i, a) {
a.push(i);
return a.length < n ? fillArray(n, ++i, a) : a;
}
console.log(fillArray(10, 0, []));
首先,这不是一个应该在 JavaScript 中递归实现的好例子。这是不合时宜的。
结果undefined
函数外部的原因是代码无法返回每个连续递归调用的结果。递归语句应如下所示:
return fillArray(n,++i);
否则,返回数组的最后一个调用将被倒数第二个调用忽略其返回值。
看看你的例子:
var arr = [];
function fillArray(n,i){
if(arr.length !== n){
if(i===0)
arr[i] = i;
else
arr[i] = arr[i-1] + 1;
fillArray(n,++i); // ends without returning anything
}
else{
console.log(arr);
return arr; // return array
}
}
console.log(fillArray(10,0));
首先,我不会在函数之外声明值,也不会使用递归(因为你污染了你的闭包。但是,如果您这样做并保持函数不变,请不要期望值在此处返回(当您编辑它之外的变量时)。
var arr = [];
function fillArray(n,i){
if(arr.length !== n){
if(i===0)
arr[i] = i;
else
arr[i] = arr[i-1] + 1;
fillArray(n,++i);
} // return not needed
}
fillArray(10,0);
console.log(arr);
相关文章:
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 用默认值填充数组的方法
- 在 Javascript 中使用 ForEach 填充数组对象时,我是否需要定义一个数组对象
- 用当前日期填充数组并继续向后
- 用字符串填充数组的最佳方法
- Javascript 填充数组使用 for 循环
- PHP 无法从选定的表中填充数组以json_encode并在 javascript 上接收它
- Javascript/JQuery 填充数组许多元素
- 将字符串添加到已填充数组的数组中
- jQuery根据第一个输入的文本框值填充数组命名的表单字段
- 更改Img属性时出现填充数组错误
- 用对象填充数组(在对象中定义)
- 如何填充数组循环JS
- 如何实现迭代的、填充数组的Angular 2输入
- 在Javascript中基于其他信息填充数组的最有效方法是什么?
- 从多个mongodb调用填充数组的范围问题
- 动态创建的带有填充数组的下拉列表不会使用angular更新
- 我如何填充数组与二进制数据流从websocket
- 填充数组类型嵌套对象时出现的问题
- 从lodash填充与常规数组填充数组时产生的不希望的结果