Вы можете объединить две Array.from
вместе для создания вложенных массивов с нуля:
const makeMatrix = (lengthX, lengthY) => (
Array.from(
{ length: lengthY }, (_, y) => Array.from(
{ length: lengthX }, (_, x) => ({ x, y })
)
)
);
console.log(makeMatrix(2, 2));
console.log(makeMatrix(3, 1));
Первый аргумент Array.from
- это объект, который интерпретатор пытается превратить в массив.Передача объекта со свойством length
создаст массив этой длины со значениями undefined
.Затем второй аргумент Array.from
является необязательной функцией отображения, такой же, как Array.prototype.map
- здесь мы можем использовать это, используя второй аргумент для .map
, который является текущим индексом, который повторяется.
Итак, с помощью внешней Array.from
, получающей координату y
от преобразователя, а внутренней Array.from
, получающей координату x
от преобразователя, мы можем затем вернуть объект с нужными координатами извнутренняя функция, которая создаст сетку.