Javascript 用JS数组表示不确定大小的2d空间-负索引?

Javascript 用JS数组表示不确定大小的2d空间-负索引?,javascript,Javascript,我想在2d JS数组中表示2d笛卡尔坐标系。2d空间的大小不确定(也可以扩展到-x和-y空间)。对于正的x和y值,这很好,但是在JS数组中,索引的最小值为0,我无法扩展到负的x和y空间 我已经阅读了一些关于在JS中使用负索引的可能性的简短信息,显然这些在技术上是可能的,尽管没有得到适当的支持(例如数组函数moght不能正常工作) 我肯定其他人也有类似的要求,所以我想问一下——在JS中对此建模的推荐方法是什么?负数组索引是可行的解决方案吗?您确定需要负索引吗?通常,计算机图形的每个坐标系都从屏幕左

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

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


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

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

所以,有限尺寸的解就是变换坐标。此外,您可以在数组上使用负数标识,但最好称之为“数组对象上的键”。如果您知道它们的局限性,您可以使用它们:

  • Array.length仅适用于正索引
  • 因此,您不能从0循环到a.length-您必须找到另一个解决方案。(而且不要想在里面)
  • 因此,您需要确定循环的负开始-让它成为常量,甚至是数组对象的另一个属性(没有自动更新功能!)
但是,你说你的空间是不确定的。问题在于没有有限的数据结构——没有编程语言。当然,数组索引可能会变得非常大,但你真的需要它们吗?我非常确定,一个大小为(2^32)^2的二维数组只不过是对内存空间的巨大浪费,或者至少是让你的应用程序非常慢的东西


最好考虑一个一维数组,其中的对象表示数组中的点。你可以很容易地在它上面循环,坐标值可以是任意数字,它们不需要那么多内存。

hmm,首先想到的是一个对象,包含两个数组,一个用于正端,另一个用于负端。不知道如何处理2个零,或者使它们连续。@Joseph,是的,我也在沿着这些线思考,但我觉得在处理重叠+/-边界的事情时可能会变得混乱。还有你提到的零问题……是的,不幸的是,空间不是“预先知道的”有限大小(它不是屏幕)-因此我无法转换:(你提出了一些好的观点——我会给他们一些想法。谢谢。它不需要预先知道,它只需要一直是有限的。边界和转换函数在运行时可能会改变。啊,是的,明白了。它不必是“无限的”,只是足够大,看起来像那样。所以某种动态转换的乐趣ction可能是一个选项。但是,您是否需要在每次增加-ve边界时“移动”整个阵列?可能是通过复制到新阵列-听起来很昂贵!另一个想法是:您从ℕ → ℤ? ():-)循环会很糟糕…不,在JS中,你不需要复制数组。你可以取消移位()和推送()-这是一个有效的列表。此外,如果你有一个智能转换函数,你可以利用负索引-只需将下限存储在某个地方。