Javascript:使用非连续键迭代数组

2024-03-27

我需要迭代一个键不连续的数组:

var messages = new Array();
messages[0] = "This is the first message";
messages[3] = "This is another message";

显然,使用 for 循环的索引是行不通的,因为它取决于键的顺序:

for (var i=0 ; i<messages.length ; i++) {
    alert(messages[i]); // Will only alert the first message, as i is never equal to 3
}

处理这个问题的规范方法是什么?for-each 语法不适用于在 javascript 中迭代数组中的值 https://stackoverflow.com/questions/9065358/javascript-object-property-not-in-scope?谢谢。


惯用的方法是使用对象,而不是数组。请务必检查一下hasOwnProperty以确保您不会拾取可能已添加到原型中的杂散东西。

var messages = { };
messages[0] = "This is the first message";
messages[3] = "This is another message";

for (var i in messages) {
    if (messages.hasOwnProperty(i))
        alert(messages[i]); 
}

或者,更现代的方法是使用Object.keys

Object.keys(messages).forEach(prop => {
    alert(messages[prop]);
});

如果您计划在 IE 等旧版浏览器中运行该代码,请务必使用 Babel 转译该代码。

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

Javascript:使用非连续键迭代数组 的相关文章

  • ECMAScript 6 类中的 getter 和 setter 有何用途?

    我对 ECMAScript 6 类中 getter 和 setter 的意义感到困惑 什么目的 下面是我参考的一个例子 class Employee constructor name this name name doWork return
  • Sequelize 关联 - 请改用 Promise 风格

    我正在尝试将 3 张桌子连接在一起Products Suppliers and Categories然后排SupplierID 13 我读过了如何在sequelize中实现多对多关联 https stackoverflow com a 25
  • 如何从左向右滑动文本和图像并具有滑动效果[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • codePointAt 和 charCodeAt 之间的区别

    有什么区别String prototype codePointAt and String prototype charCodeAt 在 JavaScript 中 A codePointAt 65 A charCodeAt 65 从 MDN
  • 如何使用 JavaScript 压缩文件?

    有没有办法使用 JavaScript 来压缩文件 例如 在雅虎邮件中 当您选择下载电子邮件中的所有附件时 它会被压缩并下载到单个 zip 文件中 JavaScript 能够做到这一点吗 如果是这样 请提供一个编码示例 我发现这个图书馆叫js
  • 如何使用javascript将视频文件转换为字符串?

    我在 signalR 工作 我想通过将视频文件拆分为不同部分来将视频文件从一个客户端发送到另一个客户端 我已经通过分割图像源数据发送图像并在另一个客户端上接收该图像 document getElementById fileUpload ad
  • 如何将数据从 JavaScript 发送到 Python

    我正在 jinja2 和 python2 7 上使用 GAE 进行 Web 开发 我可以从Python获取数据 但我无法将数据从 JavaScript 发送到 Python 这是 JavaScript 代码 function toSave
  • linkedin js 如何是有效的 javascript

    LinkedIn Javascript 集成是通过以下方式完成的 我不明白 这怎么是一个有效的javascript 为什么 api key 没有被引用 脚本标签的主体带有src永远不会被执行 但是 加载的脚本可以像访问任何其他元素的内容一样
  • 从流程图中获取数据系列的颜色

    在看到 stackoverflow 用户页面上很酷的新 声誉 选项卡后 我受到启发 开始尝试使用 Flot 图表库 我有一个包含数百个系列的折线图 在任何给定时间 这些系列中只有几个是可见的 我的数据系列分为几个 类别 我根据该类别分配数字
  • 如何使用 javascript 将我的域名字母大写?

    假设我的域名是www hello com 如何使用 jQuery JavaScript 使浏览器的 URL 栏看起来像 www HELLO com 您无法更改浏览器地址栏中显示的内容 这是一项基本的安全功能 您可以使您的域名全部大写 并将页
  • es6-module 默认导出导入为未定义

    我不确定我在这里缺少什么 我正在使用 jspm 和 es6 module loader 开发一个项目 我有一个模块定义如下 import hooks from hooks import api from api import tools f
  • 全日历与 UTC 和本地日期的混淆

    我确实让 fullcalendar 正常初始化 所以它代表当前日期 午夜 gt 午夜 1 天 1 小时时段 我从其他一些数据源获取带有时间戳的数据 格式为 YYYY MM DD HH mm 作为字符串传输 无时区信息 因此 我将该字符串转换
  • FileReader 在 Ionic 2 中未触发 onloadend

    我正在尝试使用 cordova file plugin 读取本地文件 目前我可以读取本地目录的内容并选择单个文件 但我在获取文件内容时遇到问题 这是我的函数 从列表中选择文件后单击按钮即可调用该函数 import window resolv
  • 如何使用 ReactJS 使表中的列可以以两种方式排序

    我正在 ReactJS 中构建一个简单的应用程序 它通过调用某个 API 来使用 JSON 数组 然后我将数组的结果填充到表中 我现在想让表的列可排序 我理想的情况是同时进行升序和降序排序 一旦我单击标题 当它按升序排序时 它应该按降序排序
  • 检查是否安装了 Google Analytics 或 Universal Analytics?

    我正在尝试通过 JavaScript 来确定是否加载了 Google Analytics 或 Universal Analytics 一些客户仍在使用旧的 Google Analytics 我们希望推出一个收集数据的 JavaScript
  • 使用外部按钮选择下一个/上一个单选按钮

    我正在制作一种幻灯片形式 当用户单击下一张图像时 还必须选择单选按钮 我的滑动功能可以正常工作 下一个按钮 也可以工作 但我有点坚持使用 上一个 按钮 不明白为什么它不起作用 fiddle http jsfiddle net V4tdx 这
  • 分配函数后如何删除 onmouseout 事件?

    我有一个问题 我正在为 onmouseout 事件分配一个函数 但运行该事件后 我需要将其删除 将非常感谢您的帮助 这取决于你的代码 如果你用 d3 这样做 那么你可以说 在 onmouseout 事件函数中 element on mous
  • 使用 NodeJS 创建 YouTube 播放列表

    我正在尝试使用 NodeJS 服务器创建 YouTube 播放列表 我已按照 Oauth 的 NodeJS 快速入门说明进行操作 如以下链接所示 https github com youtube api samples blob maste
  • 数组长度未定义[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我试图按如
  • gjs 如何使用 g_data_input_stream_read_line_async 在 Gnome Shell 扩展中读取套接字流

    我正在尝试编写一个 Gnome Shell 扩展 通过 Socket 服务器与 Arduino 进行通信 服务器和 Arduino 运行良好 但我陷入了监听传入服务器消息的扩展代码 因为我需要一种非阻塞方法 所以使用异步读取行 https

随机推荐

  • 在 Firefox 或我的代理中禁用 websocket

    我已将 Firefox 配置为使用我的 http 和 https 代理 是的 我自己编写代理代码 因此我可以完全控制代理 您可能知道 无法再通过 about config 在 Firefox 中禁用 WebSocket 我正在寻找一种轻量级
  • C# 参数中的键值对

    我正在寻找一种方法来实现以下功能 myFunction Key value Key2 value 我确信匿名类型的某些东西会非常简单 但我没有看到它 我能想到的唯一解决方案是params KeyValuePair
  • Angular 6 observables - 从 .subscribe() 函数中提取数据并在其他地方使用

    我用可观察到的东西把头撞在墙上 我能找到的几乎所有文档都是较旧的rxjs句法 我有一个可观察的 API 调用 我在其他地方调用它并订阅它 尝试用此数据填充表GET要求 如果我简单地console log my getData函数 它记录订阅
  • 构造函数与类 {proguard] 不匹配

    我在我的应用程序中启用 proguard 每当我构建应用程序时 我都会收到以下错误 Constructor not matched for class com acs nomad d b e 根据我的映射文件 它所指的类如下 package
  • Android - 条码片段结果不显示

    解决了 应用程序工作正常 不会崩溃 但应该将 resultView 文本从 Hasil Scan 更新为扫描结果 但事实并非如此 问题是扫描后文本视图 结果视图 未更新 我使用 DM77 Zxing 条码扫描仪 这是我到目前为止所做的代码
  • 在 Swift 中传递并打印枚举中的所有情况

    考虑这个简单的枚举 enum myEnum String case abc ABC case xyz XYZ 我想编写一个可以打印枚举中所有情况的函数 喜欢 printEnumCases myEnum 预期结果 ABC XYZ 注意 我可以
  • 尝试 UNINSTALL_SHORTCUT 但快捷方式不会消失

    我创建了一个测试活动 它在 Android 主屏幕上安装了它自己的快捷方式 当您单击按钮时 活动应该删除它刚刚创建的相同快捷方式 但是 我似乎没有做任何事情来删除快捷方式 下面是 Java 代码 ShortcutTest java impo
  • 为什么那些 Google 图像处理示例 Renderscript 在 Nexus 5 的 GPU 上运行速度较慢

    我要感谢斯蒂芬在上一篇文章中的快速回复 这是这篇文章的后续问题为什么非常简单的 Renderscript 在 GPU 中的运行速度比在 CPU 中慢 3 倍 https stackoverflow com questions 2038169
  • 无法在 SwiftUI 中获得正确的视图位置

    我试图获取 Button 的 midX 位置 但它总是给我意想不到的结果 我尝试过使用 global local 和 named 坐标空间 但它仍然不起作用 也许还有另一种方法可以在没有 GeometryReader 的情况下获取 UI 元
  • VSTS Build vNext NuGet 自定义包源

    我们有一份 Azure 企业协议 其中包含一个绑定了 VSTS 帐户的主订阅 我们设置了包管理扩展 以便为不同的项目托管一些有用的包 对于每个客户 我们在此 EA 中创建一个订阅并与其绑定一个 VSTS 帐户 我们在后一个订阅的托管构建代理
  • 删除一对多关系中的子项

    非常基本的 Hibernate 3 6 10 实现存在问题 我有两节课 日程表和活动 到达事件的唯一方法是通过时间表 因此我将其建模为具有许多事件的时间表的一对多关系 这是时间表 package com heavyweightsoftwar
  • 避免臭名昭著的“eval(parse())”构造

    好的 所以我正在运行一些循环来处理存储在列表对象中的数据 永远铭记那些臭名昭著的人fortune告诫不要使用eval parse mystring 我想出了这个 Rgames gt bar foo foo fast 1 1 2 3 4 5
  • AVL树:在O(logn)时间内找到两个值之间的键中数据值最小的键

    所以我得到了一棵AVL树 我试图至少找出伪代码 以在两个值 k1 和 k2 之间的所有键中找到具有最小数据值的键 这是假设每个节点中存储的字段数据是整数 我想确保我的伪代码在 O logn 时间内运行 我知道我可以通过在节点结构中存储一个额
  • Activity.getIntent() 可以返回 null 吗?

    Can Activity getIntent https developer android com reference android app Activity html getIntent 永远回来null 文档没有提到这种可能性 所以
  • 在 Symfony2 上的产品中使用 assetic 时找不到 Twitter Bootstrap glyphicons 字体

    我读过很多关于此的文章 但无法让它适用于我的项目 所以基本上我有一个 Symfony2 项目 其中包括 twitter bootstrap v3 在开发模式下一切正常 但当我在产品模式下尝试时 我收到错误消息 说找不到 twitter 引导
  • 从 Php 上下文调用 Node 和 uglifyjs

    我正在尝试 JS minifier 库 UglifyJS2 我使用 homebrew 在我的 mac 上安装了 node js 然后通过 npm 安装了 uglifyjs 在 shell 中一切正常 在路径中找到节点 我手动将 uglify
  • http 参数 MAX_COUNT Wildfly 的默认值是多少?

    我们已经将jboss升级到wildfly 在旧版本中我们遇到了这样的问题post中传递的最大参数个数 https stackoverflow com questions 12277231 maximum number of paramete
  • “未知自定义元素”警告位于组件标记内部,但不在其外部

    我创建了一个像这样的组件
  • Python如何格式化货币字符串

    我有三个浮点数 我想将它们输出为小数点后两位字符串 amount1 0 1 amount2 0 0 amount3 1 87 我想将它们全部输出为一个字符串 分别看起来像 0 10 0 00 和 1 87 我如何有效地做到这一点 直接格式化
  • Javascript:使用非连续键迭代数组

    我需要迭代一个键不连续的数组 var messages new Array messages 0 This is the first message messages 3 This is another message 显然 使用 for