首页 > 解决方案 > 重构更简洁和高性能的代码

问题描述

我想以乘法表的形式创建一个多维数组。表长度将是唯一的参数。因此,如果参数 n = 4,则预期输出将是 -

[[1,2,3,4],[2,4,6,8],[3,6,9,12],[4,8,12,16]]

这是我的解决方案,但我觉得它可以更简洁和高效......

  let array = [];
  let indexes = n;
  let groups = n;
  //---Loop for the groups
  for(let g = 0; g < groups; g++){
    //---Create multidimensional array
    array[g] = [];
    //---Loop for the indexes of the each group
    for(let i = 0; i < indexes; i++){
      array[g][i] = (g + 1) * (i + 1);
    }
  }
  return array;
};

标签: javascriptalgorithm

解决方案


您可以Array.from使用内置的映射器。

const
    getTable = length => Array.from(
        { length },
        (_, i) => Array.from(
            { length },
            (__, j) => (i + 1) * (j + 1)
        )
    );


getTable(4).forEach(a => console.log(...a));

getTable(3).forEach(a => console.log(...a));


推荐阅读