Javascript 在子列表中递归放置对

Javascript 在子列表中递归放置对,javascript,recursion,Javascript,Recursion,我正在练习递归,并试图构建一个函数,该函数只使用递归(无forEaches、循环等)扫描成对对象并将它们放入自己的列表中。如果有奇数元素,则添加零。这是我的代码和一个示例输入/输出。我唯一缺少的是如何在最后处理未定义的情况。我该怎么处理 function ownListPair(arr){ return arr.length < 2 ? [[arr[0], 0]] : [[arr[0], arr[1]]].concat(ownListPair(arr.slice(2))); } v

我正在练习递归,并试图构建一个函数,该函数只使用递归(无forEaches、循环等)扫描成对对象并将它们放入自己的列表中。如果有奇数元素,则添加零。这是我的代码和一个示例输入/输出。我唯一缺少的是如何在最后处理未定义的情况。我该怎么处理

function ownListPair(arr){

return arr.length < 2 ? [[arr[0], 0]] : [[arr[0], arr[1]]].concat(ownListPair(arr.slice(2)));

}


var arr = [2,7,8,3,1,4]
//should return [ [ 2, 7 ], [ 8, 3 ], [ 1, 4 ]]
console.log(ownListPair(arr))
//returns [ [ 2, 7 ], [ 8, 3 ], [ 1, 4 ], [ undefined, 0 ] ]
//how do I handle the undefined case? I tried a check for if the length is 1
 and got "maximum call stack exceeded"...
函数ownListPair(arr){
返回arr.length<2?[[arr[0],0]]:[[arr[0],arr[1]]].concat(ownListPair(arr.slice(2));
}
var arr=[2,7,8,3,1,4]
//应该返回[[2,7]、[8,3]、[1,4]]
console.log(ownListPair(arr))
//返回[[2,7],[8,3],[1,4],[undefined,0]]
//如何处理未定义的情况?我试着检查长度是否为1
并得到“超过最大调用堆栈”。。。

还尝试在第一次长度检查时检查arr[0]是否未定义,但也检查了调用堆栈错误

您需要一个案例来说明
arr.length==0
。你可以用多种方法来写,这里有一种:

函数ownListPair(arr){
如果(arr.length==0)
返回arr;
else if(arr.length==1)
返回[[arr[0],0]];
其他的
返回[arr[0],arr[1]].concat(ownListPair(arr.slice(2));
}
log(ownListPair([2,7,8,3,1,4])