3

我想在 2d JS 数组中表示 2d 笛卡尔坐标。2d 空间的大小不确定(也可以扩展到 -x 和 -y 空间)。这对于正 x 和 y 值很好,但是在 JS 数组中最小索引为 0 时,我无法扩展到负 x 和 y 空间。

我已经阅读了一些关于在 JS 中使用负索引的可能性的简短信息,显然这些在技术上是可行的,尽管没有得到适当的支持(例如数组函数不能正常工作)。

我敢肯定其他人一定有类似的要求,所以我想问一下——在 JS 中建模的推荐方法是什么?负数组索引是可行的解决方案吗?

4

1 回答 1

1

你确定你需要负索引吗?通常,计算机图形的每个坐标系都从屏幕左上角的 (0/0) 开始。他们在别处画轴。

因此,有限大小的解决方案只是变换坐标。此外,您可以在数组上使用负索引,但最好将其称为“数组对象上的键”。如果您知道它们的局限性,则可以使用它们:

  • Array.length 仅适用于正索引。
  • 因此,您不能从 0 循环到 a.length - 您必须找到另一个解决方案。(并且不要考虑for-in)。
  • 因此,您需要确定循环的负开始 - 让它成为一个常量,甚至是数组对象的另一个属性(没有自动更新功能!)。

但是,你说你的空间是不确定的。问题只是没有无限的数据结构——没有编程语言。当然数组 indizes 可能会变得非常大,但你真的需要它们吗?我非常确定大小为 (2^32)^2 的二维数组只不过是对内存空间的巨大浪费——或者至少是让你的应用程序非常慢的东西。

考虑一个包含表示点的对象的一维数组可能会更好。您可以轻松地循环它,您可以有任意数量的坐标值,并且它们不需要那么多内存。

于 2012-04-12T09:04:53.170 回答