javascript - 在 vanilla JavaScript 的数组中创建具有 xy 坐标的对象矩阵
问题描述
我正在尝试创建具有 x、y 坐标的对象矩阵。
例如:
var simpleMatrix = [
[{x: 0, y: 0}, {x: 0, y: 1}],
[{x: 1, y: 0}, {x: 1, y: 1}],
]
console.log('simpleMatrix is: ', simpleMatrix)
如何将其抽象为一个函数,以便生成更大的网格?例如,具有 10 行 x 10 列(或 5 行 x 6 列,或其他)的网格。
我想要一个对象数组,每个对象都包含自己的坐标。
解决方案
您可以将两个Array.from
s 链接在一起以从头开始构建嵌套数组:
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
值。然后, to 的第二个参数Array.from
是一个可选的映射函数,与Array.prototype.map
- 在这里,我们可以通过使用 to 的第二个参数来利用它.map
,它是被迭代的当前索引。
因此,通过外部从映射器Array.from
获取坐标y
,内部从映射器Array.from
获取x
坐标,我们可以从内部函数返回一个具有所需坐标的对象,这将创建网格。
推荐阅读
- java - 在Java中将大写字母排在小写字母之前
- react-native - 如何在本机反应中创建全屏 ImageBackground?
- sql - Postgresql:如何在十进制小时内找到两个日期和时间之间的差异?
- javascript - 使用 svg2png npm 库时出现 ERR_INVALID_ARG_TYPE' 错误
- .htaccess - .htaccess 重定向导致所有浏览器说“隐私错误,连接不是私有的”
- r - 通过两个相同的变量组合两个数据框
- powershell - 在 2 个不同的远程服务器上同时运行 2 个删除命令..CMD
- flutter - 当我们等待 void 方法时如何在 dart 中运行代码
- javascript - React/JS - onMouseOver 改变字体
- ios - 不能在 Swift 中将一个结构分配给另一个结构