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

JavaScript实现递归生成多维矩阵时出现RangeError错误如何解决

错误原因
  • 缺失递归终止条件:当前代码没有判断递归结束的场景,会持续对dims执行shift操作直到数组为空,此时取dims[0]得到undefined,给数组A的length属性赋值undefined就会直接触发Uncaught RangeError: Invalid array length报错。
  • 函数名拼写错误:递归调用时写的是matriz(dims),和实际定义的函数名matrix不一致,也会导致执行异常。
  • 维度数组操作逻辑冗余:循环内反复拷贝、恢复dims的逻辑完全没有必要,反而容易引入传参错误。
修复方案

直接使用如下修正后的代码即可实现预期效果:

function matrix(dims) {
  // 递归终止:只剩最后一维,直接生成0到n-1的连续数组
  if (dims.length === 1) {
    return Array.from({length: dims[0]}, (_, index) => index)
  }
  // 取当前维度的大小,剩余维度直接用slice生成副本,不需要修改原数组
  const currentSize = dims[0]
  const restDims = dims.slice(1)
  const result = []
  for (let i = 0; i < currentSize; i++) {
    result.push(matrix(restDims))
  }
  return result
}

调用matrix([2,3,4])即可得到你预期的2×3×4三维矩阵结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 10:06:07