该项目存在于数组中,但它说数组长度为 0?

2023-12-10

我可以将一个项目添加到数组中,并且我可以访问该项目,但是length报告0. Why?

var arr = [];
arr[4294967300] = "My item";
console.log(arr[4294967300], arr.length); // Outputs "My item", 0

这是因为索引太大,以至于它变成了属性,因此长度为 0。

根据ECMAScript 文档,特定值 p 只能是数组索引当且仅当:

(p >>> 0 === p) && (p >>> 0 !== Math.pow(2, 32) - 1)

Where >>> 0相当于ToUint32()。在你的情况下:

4294967300 >>> 0 // 4

根据定义,lengthproperty 始终比最大有效索引的数值大 1;负指数会给你同样的行为,例如

arr[-1] = 'hello world';
arr.length; // 0
arr['-1']; // 'hello world'

如果您的数字范围在有效(并用作索引)和“无效”(将其转换为属性)之间,那么最好将所有索引转换为字符串并一直使用属性(开始和{}代替Array).

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

该项目存在于数组中,但它说数组长度为 0? 的相关文章

随机推荐

  • 相对于(也是绝对定位的)父 DIV 的绝对定位 DIV 的位置?

    这是我在修复布局时经常遇到的一个问题 我有一个绝对定位的 DIV 我在里面放置了一个子 DIV 它也需要绝对定位 但我真的希望这个子 DIV 相对于父级的行为 这可能吗 或者我需要创建一个wrap DIV div class contain
  • Protractor如何测试select2

    我有一个 select2 下拉菜单 您需要先输入 2 个字符 然后选择您的项目 我无法用量角器对此进行测试 var select2 element by css div s2id person select2 click select2 s
  • PHP中检查字符串的第一个字符是字母还是数字? [复制]

    这个问题在这里已经有答案了 有没有办法检查字符串的第一个字符是字母还是数字 我不太确定该使用什么功能 有没有办法检查不使用正则表达式 因为我们在课堂上还没有学到这一点 我鼓励您阅读更多有关PHP 中的字符串 例如 您可以像数组一样取消引用它
  • JDBC 中的 Java 类型到 Postgres ltree

    有谁知道什么 Java 类型映射到 Postgres ltree 类型 我创建一个像这样的表 CREATE TABLE foo text name path ltree 一些插入 INSERT INTO foo name path VALU
  • 在 HTML 中使用内联事件处理程序是一种不好的做法吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 使用内联 JavaScri
  • MySQL全文搜索总是有0个结果?

    我读到使用全文搜索比使用 LIKE 更快 我已经更新了我的脚本 但它似乎总是有 0 结果 SELECT MATCH pages AGAINST doodle AS score FROM books WHERE MATCH pages AGA
  • 通过 exec() 从 php 调用 php 没有结果

    我有一个 PHP 脚本 可以根据用户输入创建其他 PHP 文件 基本上 有一些文件包含特定于语言的常量 define 可由用户翻译 为了避免运行时错误 我想测试新编写的文件是否存在解析错误 由于 不寻常 的字符序列 我在这里读过几篇关于SO
  • 将 ImageSharp 作为字段添加到 MarkdownRemark 节点(不是 frontmatter)

    我正在尝试执行以下 graphQL 查询 allMarkdownRemark limit 1000 edges node id parent id fields slug hero childImageSharp fixed src
  • 文本前后的行没有响应[重复]

    这个问题在这里已经有答案了 我试图在文本之前和之后各添加一行 但我希望它能够响应 目前我能找到的唯一方法是使用宽度 所以它不响应 我更愿意仅在伪元素之前和之后使用 但如果不可能 那么我会发现另一种方法 HTML div class sect
  • 将文件输出存储到变量中

    我想将文本文件的输出存储到一个变量中 这样我就可以将整个文件作为参数传递 我使用的是Windows 2003 Server 文本文件有多行 例如 10 20 210 100 fish 10 20 210 101 rock 我正在使用 Set
  • Android:如何检查是否启用了特定的 AccessibilityService

    我编写了一个 Android 应用程序 需要使用AccessibilityService 我知道如何检查手机上是否启用或禁用了辅助功能 但我无法找到一种方法来确定我的应用程序是否已在辅助功能菜单中专门启用 我想提示用户如果Accessibi
  • Scanf 将输入的字符串解析为字符数组

    我想在两个单独的数组中解析用户输入 使用 scanf g 编译没有错误 但出现内存访问错误 核心转储 德语 Speicherzugriffsfehler Speicherabzug geschrieben char top 10 char
  • Firebase 按字符搜索

    我在我的 firebase 应用程序中使用 FirebaseRecyclerAdapter 直到现在我仍然不知道如何在 Firebase 中按字符搜索 我已经使用了查询 并且得到了很好的结果 但它不可用 这是我想要的数据库搜索 这是我使用它
  • Excel 中的排列

    我有一个有 6 个空格的字符串 例如000000 每个空格可以容纳三位数字之一 0 1 或 2 我知道使用 Excel 中的 Permut 函数总共可以获得 120 种排列 即 PERMUT 6 3 120 但我会实际上喜欢在单元格中进行每
  • C# 相对路径不从工作目录开始

    我有一个 C 程序 它将从相对路径读取文件 report report1 rdlc 但是有时由于未知原因它从完全不同的位置找到了该文件C Windows system32 report report1 rdlc但该文件实际上位于C Prog
  • 客户端的 ASP.NET MVC 多对多模型

    我有 3 个多对多表 Users lt UserRoles gt Roles 我这样设置我的模型 public class User public int UserId get set public IEnumerable
  • 设置 JetBrains YouTrack 以连接到 SVN

    我意识到 TeamCity 一定是 YouTrack 和 SVN 之间的桥梁 但我不需要 Teamcity 的任何功能 我只想通过提交评论发出 Youtrack 命令像这儿 http confluence jetbrains net dis
  • TypeScript 中的“keyof typeof”是什么意思?

    向我解释一下什么keyof typeof在 TypeScript 中的意思是 Example enum ColorsEnum white ffffff black 000000 type Colors keyof typeof Colors
  • bash while循环删除文本文件的最后一行[重复]

    这个问题在这里已经有答案了 当我 cat 这个文件时 我得到 6 行 它是一个 diff 文件 bash 3 00 cat tmp voo 18633a18634 gt sashabSTP 18634a18636 gt sashatSTP
  • 该项目存在于数组中,但它说数组长度为 0?

    我可以将一个项目添加到数组中 并且我可以访问该项目 但是length报告0 Why var arr arr 4294967300 My item console log arr 4294967300 arr length Outputs M