请教一个Javascript递归设计的问题
最近遇到了一个比较难的设计问题,希望大佬不吝赐教
有一个array0,不知道其层级,但是知道其最基本的单元是一个小的尺寸固定的array00,所以最好是用递归来处理这个array0
处理分3种:
1. 直接处理这个array0,不需要其他额外变量
2. 配合一个同样尺寸的array1,处理array0和array1的对应元素
3. 配合一个在基本单元上一级尺寸相同的array2,也就是说这个array0的基本单元array00对应的是array2中的基本单元,但是array2的基本单元不是array,而是另外的数据类型,比如Object或者number
function ArrayRecursive (fun, input) {
function tmpFun (arr) {
let res = []
for (let j = 0; j < arr.length; ++j) {
if (arr[j].constructor === Array && arr[j][0].constructor !== Array) {
res.push(fun(arr[j]))
continue
} else {
res.push(tmpFun(arr[j]))
}
}
return res
}
return tmpFun(input)
}
其实编写递归算法不是特别难,难点在于我希望这个递归算法能够接收另外一个fun1作为参数,然后利用这个接收的fun1处理array0,但是问题在于这个fun需要接收不同数量的参数,有时只需要1个,有时需要2个,不排除以后可能会需要更多
export function ArraysRecursive (fun, input1, input2) {
function tmpFun (arr1, arr2) {
let res = []
for (let j = 0; j < arr1.length; ++j) {
if (arr1[j].constructor === Array && arr1[j][0].constructor !== Array) {
res.push(fun(arr1[j], arr2[j]))
continue
} else {
res.push(tmpFun(arr1[j], arr2[j]))
}
}
return res
}
return tmpFun(input1, input2)
}
所以在此请教大佬,有没有什么办法可以适应性的处理这个问题