JS 对象中的键(字符串)长度有限制吗?

2023-12-15

因此,我们有一个对象,其中键是 id (int),值是字符串。但我们注意到,大多数时候,我们是根据字符串来查找 id 的,所以我们决定反转它,让字符串作为键,值作为 id。因为这样我们就不用遍历每个项目并比较值,而是可以这样做var id = storage[text];。以下是我们所做的示例。

这是旧实现的示例:

var storage = {
  0 : null,
  1 : "Hello",
  2 : "world!",
  3 : "How are you?"
}

这是新实现的示例:

var storage = {
  "null" : 0,
  "Hello" : 1,
  "world!" : 2,
  "How are you?" : 3
}

我知道现在字符串是关键,可以为相同的字符串获取相同的 id 。但现在字符串可能会非常大(机会很小,但每个字符串可能最大 1KB),JS 或 Android webview 对对象键有长度限制吗?

另外,这种实现有缺点吗?到目前为止我还没有注意到任何问题,但你永远不知道。


我对此进行了一些研究。

MDN沉默了关于这个问题,规格也是如此(ES5, ES6)。他们只是声明属性访问器必须是字符串,没有任何限定——换句话说,就规范而言没有任何限制。这并不奇怪。

How browsers handle it, is another matter. I have set up a test and run it in a number of browsers. Chrome 40 (Desktop), Chrome 40 (Android 5.1), Firefox 36, Opera 27, and IE9+ can deal with a property name of up to 227 characters. Safari 8 (OS X Yosemite) can even handle property names of 230 characters.

For all those browsers except IE, the maximum property length is the same as the maximum string length. IE9+ can handle a maximum string length of ~230 characters, but the limit for object keys is at 227 characters, just as in the other browsers.

该测试在 iOS 上的 IE8 和 Safari 中不起作用,大概是由于测试代码引起的内存问题。

简而言之,使用长属性名称是安全的,即使在极端情况下也是如此。只要字符串本身不超出浏览器可以处理的范围,您就可以将它们用作属性名称。

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

JS 对象中的键(字符串)长度有限制吗? 的相关文章

  • 在为 RXJS 可观察量编写测试时,如何避免让调度程序通过我的业务逻辑?

    我发现使某些测试通过的唯一方法是显式地将调度程序传递给函数 为了便于说明 请考虑以下函数 function doStuff stream return stream delay 100 filter x gt x 2 0 map x gt
  • 从 TextView 中显示的数字中删除小数点[重复]

    这个问题在这里已经有答案了 对于我的简单计算器 我将结果显示在TextView 但它总是显示小数 我怎样才能删除它们 这是我的代码 public class MainActivity extends Activity implements
  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • Android Studio - 值必须 ≥ 0

    我在 Android Studio 中收到与光标有关的错误 我的代码中有以下行 String data cursor getString cursor getColumnIndex columnIndex columnIndex 被传递到该
  • 如何流式传输 OpenAI 的完成 API?

    我想流式传输结果通过 OpenAI 的 API 完成 https beta openai com docs api reference completions 该文档提到使用服务器发送的事件 https developer mozilla
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • onClick 未在带有子项的 LinearLayout 上触发

    我有一个自定义的 LinearLayout 和一个较小的 TextView 子级 我希望能够单击 TextView 未覆盖的区域 因此我将 clickable true 和 onclicklistener 设置为 LinearLayout
  • Typeahead.js substringMatcher 函数说明

    我只是在做一些研究Typeahead js这是一个非常酷的图书馆 感谢文档 我已经成功地获得了一个基本的示例 该文档也非常好 但是我试图弄清楚以下代码块实际上在做什么 var substringMatcher function strs r
  • 在Android Studio中更改项目主题?

    我使用浅色主题创建了一些项目 现在我想将其更改为深色 但我不知道该怎么做 顺便说一句 我不是问如何在代码中做到这一点 只是问如何更改项目的默认主题 在 AndroidManifest xml 的 application 标签下 您可以设置您
  • android httprequest java.net.UnknownHostException

    我想用android发出http请求 是使用这个 void testHTTP HttpClient httpClient new DefaultHttpClient HttpUriRequest request new HttpPost h
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 类型“typeof import("/home/kartik/Desktop/Ecommerce/ecommerce/node_modules/firebase/index")”上不存在属性“auth”。 TS(2339)

    我是 FireBase 的初学者 我正在尝试使用 Angular 通过 FireBase 实现 Google 登录 我在 auth 时收到上述错误 我特此附上login component ts和package json package l
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • 如何获取 UIWebView 中元素的位置?

    我在 iPad 程序中加载了 html 的 UIWebView 通过使用 webkit column width 我将 html 分为几列 padding 0px height 1024px webkit column gap 0px we
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • Android 自定义警报对话框中的 OnClickListener

    我是一个自学成才的初学者 感谢耐心 谢谢 在 Eclipse 中 我使用自己的 xml 文件 custom dialog 创建了一个自定义警报对话框 称为 usernamealert 如果用户尚未输入用户名 即 username lengt
  • 在没有 Wifi 的情况下获取 Android 设备的 MAC 地址

    如何获取没有 Wifi 接口的 Android 设备 例如 Android 模拟器 的网络接口的 MAC 地址 通过WifiManager返回获取的WifiInfonull EDIT 更清楚地说 我必须与本地网络上的现有网络协议 不是我设计
  • 在 Android 中使用 iText 将图像添加到特定位置

    我想使用 Android 中的 iText 将图像添加到 PDF 文件中的特定位置 这是一个可填写的表单 我添加了作为图像占位符的文本框 我想要做的就是像这样获取该文本框和图像 public class FormFill public st
  • 当ScrollView滚动到底部时加载更多数据

    我有一个带有动态加载内容的滚动视图 有时可能会有很多内容 所以我想在用户滚动到底部时加载更多内容 我搜索了合适的方法 发现了两种 onScrollChanged and getScrollY 但我不知道如何将它用于我的目的 请给我一些建议

随机推荐

  • iPhone Web 应用程序的 jQuery Mobile 高度问题,假设页面高度为 480 而不是 460

    jQuery Mobile 似乎在初始化时计算页面高度 但由于我们在应用程序中启用了状态栏 JQM 假设我们有 480 像素可用 而不是 460 像素 我们正在为 iPhone 构建移动网络应用程序 我们使用 JQM 1 1 1 和 Pho
  • 如何在 Python 中将多个高斯曲线拟合到质谱数据?

    我想在 Python 中将多条高斯曲线拟合到质谱数据 现在 我一次对数据进行高斯拟合 实际上是一次一个范围 有没有更简化的方法来做到这一点 有没有办法可以通过循环运行数据以在每个峰值处绘制高斯分布 我猜一定有更好的方法 但我已经通过互联网进
  • Solr Lucene 中连字符/破折号的挑战

    我试图让 Solr 仅提取格式类似于 n nnnnnnn 的票证的第二个 7 位数字部分 原本我希望把全票保留在一起 根据文档 数字与数字应该保留在一起 但在解决这个问题一段时间并查看代码后 我认为情况并非如此 Solr 总是生成两个项 因
  • Linq - 将 GroupBy 与我自己的类型与匿名类型一起使用

    我有一个要使用 Linq 分组的对象列表 对象类型是 GroupRating 我想按它们的 Params 属性对它们进行分组 public class GroupRating public long Id get set public Pa
  • 获取加起来达到目标​​总和的元素组合

    是否可以得到a总和等于变量的列表元素sum 我尝试过迭代 如果我想从列表中获取 2 个元素 也许可以这样做 但我不知道如何获取更多元素 def function sum a h c 1 2 3 4 5 6 7 8 return f sum
  • emacs 中的 Shift 箭头选择

    我正在使用 GNU Emacs 23 2 1我的init el cua mode 1 transient mark mode 1 setq shift select mode t global linum mode 1 show paren
  • PL/SQL - 如何在 IN 子句中使用数组

    我试图在 IN 子句中使用我的过程的输入值数组作为游标的 where 子句的一部分 我知道以前有人问过这个问题 但我还没有看到如何使我的语法正确编译 在封装规范中 类型为 TYPE t brth dt IS TABLE OF sourceT
  • 在大目录中转换 XML 时出现 java.lang.OutOfMemoryError

    我想使用 XSLT2 在一个具有很多级别的巨大目录中转换 XML 文件 文件数量超过 100 万个 每个文件大小 4 至 10 kB 一段时间后 我总是收到 java lang OutOfMemoryError Java 堆空间 我的命令是
  • 将 MemoryStream 写入响应对象

    我正在使用以下代码来传输 MemoryStream 对象中的 pptx 但是当我打开它时 我在 PowerPoint 中收到修复消息 将 MemoryStream 写入响应对象的正确方法是什么 HttpResponse response H
  • 根据日期和时区计算 tm_isdst

    当我运行线路时 time strptime 2012 06 01 12 00 00 time strftime Z Y m d H M S Z 它为我创建了一个结构 但标志tm isdst是错的 六月初 DST 已生效 但无论我在哪一天输入
  • 如何在Access表中插入列描述?

    如何使用 SQL 在 Access 表中插入列的描述 I do CREATE TABLE TAB A COLUMN1 TEXT 30 COLUMN2 REAL PRIMARY KEY COLUMN1 但如何为每列插入描述 你不能用 SQL
  • 我的不和谐机器人代码正在运行,但没有响应我的命令[重复]

    这个问题在这里已经有答案了 我是一名编程大三学生 我了解 Node js 并且想编写自己的 Discord 机器人 我下面写的代码不起作用 你能帮我解决这个问题吗 const Client Intents require discord j
  • Powershell 在空文件夹上比较对象

    我正在编写一个简单的 DLL 复制脚本来帮助我的开发团队设置他们的本地环境 我检查 build devdrop 文件夹并获取 DLL 文件列表 然后 我查看本地文件夹并复制所有较新的 DLL 我的问题是当本地文件夹为空时 即脚本第一次运行
  • Scala Akka HTTP 转换参数为 java.time.ZonedDateTime

    我正在使用 Akka HTTP 在 Scala 中 开发 REST 服务 我希望将传入 http get 请求的参数转换为 ZonedDateTime 类型 如果我尝试使用 String 或 Int 但使用 ZonedDateTime 类型
  • 从 NetworkStream 读取特定数量的字节

    我正在尝试从网络流中读取已知长度的消息 我有点期待NetworkStream Read 将等待返回 直到我给它的缓冲区数组已满 如果不是 那么这样做的意义何在 ReadTimeout财产 我用来测试我的理论的示例代码 public stat
  • Haskell 打印字符串标准输出

    我需要打印 powerset 中的元素 现在我的代码的输出是这样的 a ab b x xy xyz xz y yz z 但是 我需要输出不带引号 如下所示 a ab b x xy xyz xz y yz z 这就是我所拥有的 我该如何修复它
  • Rails:如何在 Heroku 上使用系统 zip 从 xml 模板制作 docx?

    我在本地工作 将模板文件存储在 Rails root tmp using system cd tmp template zip r filename 压缩文件 将 docx zip 存档 发送到 S3 然后发送到浏览器 问题是 Heroku
  • 页眉/页脚终端显示[重复]

    这个问题在这里已经有答案了 如何创建一个包含静态页眉和页脚的 python 脚本 如下图所示 您可以使用curses对于蟒蛇 例子 import curses myscreen curses initscr curses start col
  • 从 ASP.Net MVC Ajax 请求服务器重定向到新页面

    我正在尝试使用另一个控制器调用方法RedirectToAction 但这不起作用 你能解释一下我做错了什么吗 HttpPost public ActionResult AddToWishList int id bool check var
  • JS 对象中的键(字符串)长度有限制吗?

    因此 我们有一个对象 其中键是 id int 值是字符串 但我们注意到 大多数时候 我们是根据字符串来查找 id 的 所以我们决定反转它 让字符串作为键 值作为 id 因为这样我们就不用遍历每个项目并比较值 而是可以这样做var id st