javascript - 不手动写入就无法创建自动填充数组
问题描述
我想创建一个坐标数组,这样我就不必手动编写 100 对 x 和 y 值。我正在考虑 for
在另一个for
循环中使用循环,但我无法实现。
我想创建一个空的array
,命名为 CoordsArray,并利用最内部的 push 方法,创建一个混合数组,如下所示:
var coordsArray = [
{x:0,y:0},{x:0,y:20},{x:0,y:40},{x:20,y:0},{x:20,y:20},{x:20,y:40},{x:40,y:0},{x:40,y:20},{x:40,y:40}
]
上面代码的用法是创建三行三个圆(使用 D3js)而不手动创建数组,因为稍后我将不得不创建一个 10 行十个圆并创建每个圆的 x 和 y 位置将会很麻烦。实现它的最佳方法是什么?谢谢。
解决方案
我看到的模式是这样的:
- x 值是(数组索引/列数)向下舍入到最接近的整数
- y 值是(数组索引/列数)的模数
因此,您可以从长度为空的数组(行 * 列)开始,用圆圈大小填充每个条目,然后将每个元素映射到通过将数组值乘以这些 x 和 y 计算而创建的对象...
let rows = 3,
cols = 5,
size = 20;
let data = new Array(rows*cols)
.fill(size)
.map((d, i) => ({
x: d * Math.floor(i/cols),
y: d * (i%cols)
}));
console.log(data);
当然,它可能不像嵌套循环那样可读,但我喜欢它......
推荐阅读
- mysql - How to get select rows that have first occurrences before column value changes in MYSQL8
- android - 如何调试 INSTALL_FAILED_INVALID_APK?
- snowflake-cloud-data-platform - 如何在 AIX 机器上安装雪花 cli
- python - XlsxWriter:为什么 in_memory 会给出损坏的字节序列?
- javascript - 如何通过新日期将部分的 offsetHeight 同步到当前时间?
- python - PyQt5:同一窗口的多个实例
- asp.net-core - 自定义 swagger ui 以显示参数架构
- javascript - 未捕获的类型错误:d3.csv(...).then 不是函数
- macos - Pygame 窗口根本不显示。它甚至没有说任何错误,它只是说“pygame 1.9.6 Hello from the pygame community”。
- rust - 为什么在具体实现中使用 Self 而不是类型的名称?