【问题标题】:Return an n*n nested array populated with null返回一个填充了 null 的 n*n 嵌套数组
【发布时间】:2018-09-05 03:21:22
【问题描述】:

我在这里很迷茫。给定一个数字 n,我必须返回一个填充了 null 值的 n*n 嵌套数组。 如果 n 为 3:

[
  [null, null, null],
  [null, null, null],
  [null, null, null]
]

我很迷茫。我有这样的东西:

function generateMatrix (n) {
  let item = 'null';
  let array1 = [];
  let solution = [];
  array1.push(item.repeat(n));
  solution.push(array1.repeat(n));
  return solution;  
  }

我知道这是不对的,不仅因为它不起作用,而且因为它没有意义而且我不知道该怎么做。请记住我非常初级,刚开始学习JS。

我见过othersimilar 线程,但无法弄清楚。

提前致谢。

【问题讨论】:

  • 所以给定 n - 你需要循环很多次。在每个循环内部,您需要再次循环
  • null !== 'null'!
  • 您希望首先能够创建一行n null - 有多种方式,例如循环,或者您可以使用Array.fill(内部循环数组),结合Array(n) 创建一个长度为 n 的数组,其中包含 undefined,但使用 .fill 将它们更改为 null,如下面的答案所示,输出 [null, null, null](如果 n 为 3),然后使用相同的模式创建一行行。所以你会用 n [null, null, null] 填充一个数组来得到你描述的矩阵。

标签: javascript multidimensional-array


【解决方案1】:

您可以使用Array.fromArray.fill 方法来做到这一点。

function matrix(n) {
  return Array.from(Array(n), () => Array(n).fill(null))
}

console.log(matrix(3))

您可以使用相同的方法创建具有rows x columns 维度的矩阵。

function matrix(rows, cols) {
  return Array.from(Array(rows), () => Array(cols).fill(null))
}

console.log(matrix(2, 4))
console.log(matrix(3, 2))

【讨论】:

    【解决方案2】:

    function generateMatrix (n) {
      let result = [];
      for (var i = 0; i < n; i++) {
        result.push([]);
        for (var j = 0; j < n; j++) {
          result[i].push(null);
        }
      }
      return result;  
    }
    console.log(generateMatrix(3));

    【讨论】:

      【解决方案3】:

      这是使用函数 Array.from 和函数 fill 的替代方案。

      var rows = 3;
      var cols = 3;
      
      var matrix = Array.from({length: rows}, () => new Array(cols).fill(null))
      console.log(JSON.stringify(matrix, null, 2));
      .as-console-wrapper { max-height: 100% !important; top: 0; }

      Array.from

      Array.from() 允许您从以下位置创建数组:

      • 类数组对象(具有 length 属性和索引元素的对象)或
      • 可迭代对象(您可以从中获取其元素的对象,例如 Map 和 Set)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-30
        • 2016-11-06
        • 1970-01-01
        • 2014-07-20
        • 1970-01-01
        • 1970-01-01
        • 2014-10-08
        • 2020-11-11
        相关资源
        最近更新 更多