请教一个Javascript递归设计的问题

silent_missile 2019-06-26 05:30:16
最近遇到了一个比较难的设计问题,希望大佬不吝赐教

有一个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)
}

所以在此请教大佬,有没有什么办法可以适应性的处理这个问题
...全文
84 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2019-06-26
  • 打赏
  • 举报
回复


function ArrayRecursive (fun, ...input) {
  function tmpFun (arr1, ...arrN) {
    let res = []
    for (let j = 0; j < arr1.length; ++j) {
      var arg = [arr1[j]];
      for (let i = 0; i < arrN.length; i++) {
        arg.push(arrN[i][j]);
      }
      if (arr1[j].constructor === Array && arr1[j][0].constructor !== Array) {
        res.push(fun(...arg))
        continue
      } else {
        res.push(tmpFun(...arg))
      }
    }
    return res
  }
  return tmpFun(...input)
}

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧