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

如何编写函数生成n×n的null填充嵌套数组?现有错误代码求指导

解决JavaScript生成n×n null嵌套数组的问题

嘿,我帮你排查下这段代码的问题,再给你几个靠谱的实现方案~

你的代码问题分析

  • 首先,你把item定义成了字符串'null',但我们需要的是JavaScript的原始值null,不是字符串类型的"null"哦
  • 数组没有repeat()方法,只有字符串才有这个方法,所以array1.repeat(n)会直接抛出错误,这就是代码无法运行的直接原因
  • 就算忽略上面的问题,item.repeat(n)得到的是类似"nullnullnull"的长字符串,根本不是包含n个null的数组,逻辑完全偏离了需求

正确的实现方式

方式1:基础循环写法(容易理解)

这种写法一步步构建数组,新手也能轻松看懂:

function generateMatrix(n) {
  const solution = [];
  // 外层循环创建每一行
  for (let i = 0; i < n; i++) {
    const row = [];
    // 内层循环给每一行添加n个null
    for (let j = 0; j < n; j++) {
      row.push(null);
    }
    solution.push(row);
  }
  return solution;
}

方式2:ES6简洁写法(一行搞定)

用Array.from()或者Array.fill()配合map来简化代码,更优雅:

function generateMatrix(n) {
  // 先创建n个元素的数组,每个元素是独立的、包含n个null的数组
  return Array.from({ length: n }, () => Array(n).fill(null));
}

// 或者另一种等价的简洁写法:
// function generateMatrix(n) {
//   return Array(n).fill().map(() => Array(n).fill(null));
// }

⚠️ 这里要避个坑:不能直接写Array(n).fill(Array(n).fill(null)),因为这样所有行都会引用同一个数组,修改其中一行的元素会影响所有行,这是浅拷贝导致的问题!

测试一下:调用generateMatrix(3),就会返回[[null,null,null],[null,null,null],[null,null,null]],完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:51:41