在 JavaScript 中返回一个数组
Returning an Array in JavaScript
我受到这个问题的启发,用JavaScript编写了一个递归函数来添加数组的元素并相应地返回数组。
在伪代码中
arr = [1,2,3,4,5,6]
func (arr,2) = > [1+3+5, 2+4+6]
[9,12]
func (arr,3) = > [1+4,2+5,3+6]
[5,7,9]
所以我在这里写了一个小提琴。
var input = [1,2,3,4,5,6,7,8,9];
function tupleAdd(tuple,i,p,t,output){
if(typeof t == "undefined")
t=0;
if(typeof p == "undefined")
p=0;
if(typeof output == "undefined")
output = [];
if(typeof output[t] =="undefined")
output[t]=0;
output[t]+=i[p];
p++;
t++;
t>=tuple?t=0:null;
if(p<i.length)
tupleAdd(tuple,i,p,t,output);
else{
console.log(output);
return(output);
}
}
x = tupleAdd(3,input);
console.log(x);
我的函数有效,因为第一个console.log()
显示适当的值。让我感到奇怪的是,当我return
output
(有或没有parens)并尝试再次记录它时,我得到了undefined
。
我觉得这令人深感不安。谁能阐明为什么return
值与console.log
值不同?
您的递归已损坏。你变得未定义,因为你没有返回里面的函数调用。
tupleAdd(tuple,i,p,t,output);
需要
return tupleAdd(tuple,i,p,t,output);
你需要返回递归调用的值:
var input = [1,2,3,4,5,6,7,8,9];
function tupleAdd(tuple,i,p,t,output){
if(typeof t == "undefined")
t=0;
if(typeof p == "undefined")
p=0;
if(typeof output == "undefined")
output = [];
if(typeof output[t] =="undefined")
output[t]=0;
output[t]+=i[p];
p++;
t++;
t>=tuple?t=0:null;
if(p<i.length)
return tupleAdd(tuple,i,p,t,output);
else{
console.log(output);
return(output);
}
}
x = tupleAdd(3,input);
console.log(x);
function doTuple(arr, tuple){
if(!arr.length){
return tuple;
}
var el = arr.splice(0,1);
el % 2 ? tuple.evens += +el : tuple.ods += +el;
return doTuple(arr, tuple);
}
console.log(doTuple([1,2,3,4,5], {evens:0,ods:0}));
相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- JavaScript数组包含一个值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- jQuery$.inArray()总是返回-1和一个对象数组
- 在数组中的一个元素上设置多个值
- javascript处理一个对象数组以获得一个新的对象数组
- 作为一个二维数组,从ajax接收
- 你能用来自数组的属性名称生成一个对象吗
- 多维关联数组的最后一个索引
- 如何创建一个方法来验证数组的范围
- 循环以检查数组中的最后一个图像
- 在Javascript中将一个值和字符串数组转换为if语句
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 如何将一个对象添加到每个对象数组中
- 如何创建一个谷歌地图地理坐标数组
- 如何从另一个带下划线的数组中筛选带元素的数组
- 如何在PHP数组中加载下一个youtube
- 查找对象数组是否包含其中一个标记的最快方法
- 如何使用Javascript和Ajax传递一个HTML选择标签到PHP $_POST与一个(数组)var当名称属性是一个