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

求助:如何用基础for循环实现n×n的makeGrid函数?

解决makeGrid函数生成n×n网格数组的问题

先说说你代码里的核心问题:

  • 你一开始定义了空数组arr,接着用for (const n of arr)遍历它,空数组根本不会触发循环,所以arr.push()一次都不会执行,最后自然返回空数组。
  • 就算循环能跑起来,n * value的逻辑也完全不对——n是你传入的网格边长,不是数组元素,而且字符串和数字相乘会得到NaN,完全达不到生成网格的目的。

用基础for循环的正确写法需要两层嵌套循环:外层循环控制行数(一共生成n行),内层循环控制每行的元素数量(每行添加n个目标值)。代码如下:

function makeGrid(n, value) {
    const arr = [];
    // 外层循环生成每一行
    for (let i = 0; i < n; i++) {
        // 创建当前行的子数组
        const row = [];
        // 内层循环往当前行添加n个指定值
        for (let j = 0; j < n; j++) {
            row.push(value);
        }
        // 将生成好的行加入网格数组
        arr.push(row);
    }
    return arr;
}

测试你给出的示例:

let actual = makeGrid(2, "x");
// 返回结果为 [["x", "x"], ["x", "x"]],与预期完全一致

这个逻辑很直白:先初始化外层的网格数组,然后循环n次创建每一行的子数组,再往每个子数组里循环添加n次传入的目标值,最后把组装好的行加入网格数组,就能得到标准的n×n网格了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:20:29