用 JS 数组表示不确定大小的二维空间 - 负索引?

2023-12-05

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

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

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


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

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

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

但是,你说你的空间是不确定的。问题在于,在任何编程语言中都不存在无限的数据结构。当然,数组索引可能会变得非常大,但是您真的需要它们吗?我非常确定大小为 (2^32)^2 的二维数组只不过是内存空间的巨大浪费 - 或者至少会使您的应用程序变得极其缓慢。

最好考虑一个一维数组,其中的对象表示其中的点。您可以轻松地循环它,您可以使用任何数字作为坐标值,并且它们不需要那么多内存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 JS 数组表示不确定大小的二维空间 - 负索引? 的相关文章

随机推荐

  • 如何在流(java)中添加日期时间值?

    今天我开始学习 Java 8 所以我对 Java 8 及其相关的东西还很陌生 我有一份活动清单 活动有名称 开始时间 结束时间 对于 startTime 和 endTime 我使用 joda 时间中的 DateTime 我正在尝试确定映射形
  • Swift:设置 rootViewController 不起作用?

    我正在尝试启动一个新的 Swift 项目 这是我第一次尝试以编程方式创建视图 然而 我的控制器看起来根本没有被加载 我所看到的只是启动屏幕 然后当我将其加载到模拟器上时出现黑屏 这是我的 AppDelegate import UIKit U
  • 带有 TypeScript 错误的 Angular HTTP GET http.get(...).map 不是 [null] 中的函数

    我在 Angular 中遇到 HTTP 问题 我只想GET a JSON列出并在视图中显示它 服务等级 import Injectable from angular2 core import Hall from hall import Ht
  • ReactJS 中的页面转换和组件动画

    我想要的效果 当页面加载组件 A B 和 C 时独立启动动画 用户单击组件 B 内的链接 组件 A B 和 C 独立启动 加载新页面 更多组件呈现动画 这听起来很简单 但我正在努力实现它 到目前为止 我已经使用了许多路线设置react ro
  • C++11 获取 unordered_map 中一个存储桶的所有项目

    we know std unordered map bucketreturn 桶是容器内部哈希表中的一个槽 元素根据其键的哈希值分配到其中 如何在返回桶中获取开始迭代器和结束迭代器 换句话说 我可以使用bucket count要获取桶的数量
  • 如何使用Ant任务启动和停止jboss服务器?

    我需要停止 部署我的ear 文件并使用Ant 任务启动Jboss 服务器 我能够使用 Ant 任务成功地编译 构建 J2EE 应用程序并将其作为 Ear 文件部署到 JBoss 服务器中 我们可以在 jboss 控制台中看到我的应用程序的重
  • 雅虎在从 smtpclient .net 发送时禁用链接

    我正在构建一个发送电子邮件的网络应用程序SmtpClient在 net中 应用程序工作正常 电子邮件成功发送到gmail帐户和hotmail帐户 但是当我向雅虎帐户发送电子邮件时 它已成功发送 但我在邮件中放入的链接被雅虎禁用 雅虎以某种方
  • 如何更改 Google 地图标记的颜色? [复制]

    这个问题在这里已经有答案了 我正在使用 Google 地图 API 构建一张充满标记的地图 但我希望一个标记能够从其他标记中脱颖而出 我认为最简单的方法是将标记的颜色更改为蓝色 而不是红色 这是一件简单的事情还是我必须以某种方式创建一个全新
  • 如何从谷歌表格的应用程序脚本中的过滤行中提取单个数组值

    我正在尝试从在应用程序脚本中过滤的 Google Sheets 行中提取单个数组值 我已根据列中空单元格的条件成功过滤数据 行 但现在 我不断收到以下错误 TypeError Cannot read property 0 of undefi
  • 让 Proguard 完全忽略包

    是否可以启用 Proguard 但保持某些类完全不受 Proguard 影响 我的 proguard 配置文件中有以下几行 keep class com heyzap 但正如我所看到的 Heyzap 包中的类实际上在 Proguard 通过
  • Python:datetime tzinfo 时区名称文档

    我有一个我建立的日期 from datetime import datetime from datetime import tzinfo test 2013 03 27 23 05 test2 datetime strptime test
  • 谷歌翻译排除单词

    我的网站上有谷歌翻译 我想阻止翻译某些单词和短语 是否可以创建一些非翻译单词和单词组合的列表 唯一的可能性是添加class notranslate 不应该翻译的元素 要防止整个网站被翻译 请添加
  • 具有复制构造函数、简单赋值运算符和简单析构函数的动态大小的文本对象

    I ve 已显示 that a std string无法插入到boost lockfree queue boost lockfree queue太有价值了 不能放弃 所以我想我可以使用非常大的固定长度chars 根据以下方式传递数据要求 假
  • 如何重用 ListView 的方法?

    我想重用 ListAC ListActivity 中的几个方法 并希望将其放入单独的类中 如果可能的话 我将有数十个 ListView 活动 ListActivities 即 ListAD ListTCDS listSFAR 等 它们将调用
  • 在没有任何库的情况下测试数字是否具有十进制值[重复]

    这个问题在这里已经有答案了 我需要测试一个数字在 C 中是否有十进制值 我只想用
  • .bat - 从文件夹文件列表创建菜单

    我通常不创建 bat 文件 但我使这个小脚本对开发有用 我用它来读取和创建文件夹中包含的文件列表 for f delims f in dir b C src release android do echo f 我发现这是关于如何从文件列表开
  • ALTER TABLE 添加复合主键

    我有一张桌子叫provider 我有三列称为person place thing 可以有重复的人 重复的地点和重复的事物 但永远不会有重复的人 地 物组合 我将如何 ALTER TABLE 为 MySQL 中的该表添加这三列的复合主键 AL
  • 为什么有些程序员声明像我的 $myvariable = shift; 这样的变量?在 Perl 中?

    我一直在关注 perlmeme org 上的教程 一些作者通过以下方式声明变量 my num disks shift 9 no idea what the shift does 并在循环内像 my source shift my dest
  • 在 Javascript 中使用 new Array 创建二维数组 [重复]

    这个问题在这里已经有答案了 我正在尝试 Hackerrank 上的一个问题 我需要创建一个数组的数组 基本上是二维数组 我的首选班轮是const counter new Array 4 fill 然而 我意识到它会创建一个二维数组 但对数组
  • 用 JS 数组表示不确定大小的二维空间 - 负索引?

    我想在 2d JS 数组中表示 2d 笛卡尔坐标 二维空间的大小不确定 也可以扩展到 x 和 y 空间 这对于正 x 和 y 值来说很好 但是在 JS 数组中最小索引为 0 时 我无法扩展到负 x 和 y 空间 我读过一些关于在 JS 中使