You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Recursive Array Flattener递归实现代码问题排查求助

你的代码存在两处逻辑错误:

  • 第一处:当判断元素为数组时,你直接将递归调用返回的扁平化子数组作为单个元素push进结果数组,没有将子数组的元素展开插入。你可以使用扩展运算符展开递归结果,或者使用concat方法合并数组。
  • 第二处:缺少else分支判断,不管元素是不是数组,你都会在if逻辑结束后再执行一次push(element)操作。如果元素是数组的话,就会把未扁平化的原始子数组也重复塞进结果数组。

修正后的代码如下:

function arrayFlattener(arr) {
  // 存储最终扁平化结果
  let arrayCopy = []

  for (let i = 0; i < arr.length; i++) {
    let element = arr[i]
    if (Array.isArray(element)) {
      // 展开递归返回的扁平化子数组后再插入结果
      arrayCopy.push(...arrayFlattener(element))
    } else {
      // 仅非数组元素直接插入
      arrayCopy.push(element)
    }
  }
  return arrayCopy
}
// 测试示例
arrayFlattener([1, [2, [3, 4]], 5]) 
// 返回结果:[1,2,3,4,5]

内容的提问来源于stack exchange,提问作者jwfirenze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 11:09:01