在 JavaScript 中迭代带有“洞”的数组

2024-01-04

我有一个数组,其中一些项目将被删除;但有些循环仍在运行,所以我想简单地跳过删除对象的地方

我知道 for(i in array) 的语法应该执行此操作,因为它会迭代索引,但是我应该如何删除我的项目呢?因为当我执行 array[4] = null 时,我的 for 只是不关心并继续尝试使用 4 处的值。

我也尝试检查是否为 !null 但没有成功...... 谢谢


如果你想删除一个项目而不留下一个洞,你应该使用.splice()

myarray.splice(idx, 1);

但如果你说你want那里有洞,但想跳过它们,那么你可以使用delete删除该项目(留个洞),并使用.forEach()用于跳过漏洞的迭代。

delete myarray[idx];

// ...

myarray.forEach(function(item, i) {
    // holes will be skipped
});

为了支持 IE8 及更低版本的旧版浏览器,您需要添加兼容性补丁forEach().

  • MDN .forEach() https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/forEach#Compatibility (忽略较短的补丁。这是一个糟糕的不兼容版本。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JavaScript 中迭代带有“洞”的数组 的相关文章

  • Android 设备上的 PhoneGap 蓝牙插件

    我一直在尝试让 PhoneGap 工作的蓝牙插件 但我似乎不知道哪里出了问题 首先 我的测试设备是 Galaxy S3 GT 19305T 应用程序是使用PhoneGap CLI http docs phonegap com en 3 0
  • TypeError: props.render 不是一个函数(React hook 形式)

    我将方法作为我用react hook form制作的形式的道具传递 当从react hook form添加控制器时 它给了我 TypeError props render不是一个函数 我在网上找不到任何解决方案 因此感谢任何帮助 impor
  • 交换关联数组中的两个项目

    Example arr array apple gt sweet grapefruit gt bitter pear gt tasty banana gt yellow 我想调换一下柚子和梨的位置 这样数组就变成了 arr array ap
  • 从数组中删除空白元素

    当我从 ruby on Rails 表单中保存多个选择时 它似乎在前面添加了一个空白元素 我该如何删除它 该字段为 selected player utf8 gt authenticity token gt H8W7qPBezubyeU0a
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 如何防止 Iframe 在与浏览器交互后弄乱浏览器的历史记录?

    因此 就我而言 我使用 Iframe 将 Grafana 附加到我的页面 这为我提供了漂亮且易于使用的图表 可以注意到 每次在图表上进行放大或缩小 使用鼠标单击 交互后 Grafana 的 Iframe 都会在我的 Angular 页面上触
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • 如何抑制窗口鼠标滚轮滚动...?

    我正在开发嵌入页面中的画布应用程序 我有它 因此您可以使用鼠标滚轮放大绘图 但不幸的是 这会滚动页面 因为它是文章的一部分 当我在 dom 元素上滚动鼠标滚轮时 是否可以阻止鼠标滚轮在窗口上滚动 附加鼠标滚轮 不是 Gecko DOMMou
  • Javascript正则表达式用于字母字符和空格? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要一个
  • JavaScript 重定向到新窗口

    我有以下代码 它根据下拉列表的值重定向到页面 我如何使其在新窗口中打开 function goto form var index form select selectedIndex if form select options index
  • 通过 $_SESSION 从一个脚本发送到另一个脚本期间数据丢失

    我正在尝试将一个充满属性的对象从一个 PHP 发送到另一个 PHP SESSION object obj where obj是一个用 foreach 循环指定的对象 foreach array of objects as obj SESSI
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • 在 webpack 2.x 中使用 autoprefixer 和 postcss

    如何使用autoprefixer使用 webpack 2 x 以前 它曾经是这样的 module loaders test scss loader style css sass postcss postcss gt return autop
  • 如何使输入字段和提交按钮变灰

    我想变灰这两件事 http doorsplit heroku com 歌曲输入字段和提交按钮 直到用户输入艺术家 有没有一种简单的方法可以通过 JQuery 来做到这一点 艺术家输入字段的id是 request artist 你可以这样做
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 为 illustrator 导出脚本以保存为 web jpg

    任何人都可以帮我为 illustrator CC2017 编写一个脚本 将文件以 JPG 格式导出到网络 旧版 然后保存文件并关闭 我有 700 个文件 每个文件有 2 个画板 单击 文件 gt 导出 gt 另存为 Web 旧版 然后右键文
  • 如何获取给定 DOM 元素的所有定义的 CSS 选择器?

    如何使用 jQuery 获取给定 DOM 元素的所有定义的 CSS 选择器 定义后 我的意思是在应用于任何样式表的所有 CSS 选择器document 在某种程度上 这类似于 FireBug 实现的功能 其中显示所选 DOM 元素的所有应用
  • 如何在 pg-promise 中设置模式

    我正在搜索的文档pg 承诺 https github com vitaly t pg promise特别是在创建客户端时 但我无法找到设置连接中使用的默认架构的选项 它始终使用public架构 我该如何设置 通常 为数据库或角色设置默认架构

随机推荐

  • 如何在出现警告消息时打印警告消息

    我有以下代码 urls lt c xxxxx http stat ethz ch R manual R devel library base html connections html http en wikipedia org wiki
  • AWS EC2 终端会话因“未找到名称为 Standard_Stream 的插件”而终止

    我在 AWS EC2 CentOS 7 上流式传输 Kafka 我的会话管理器空闲超时设置为 60 分钟 然而 在运行的时间远远低于这个值后 终端被冻结了 说My session has been terminated 当然 Kafka 流
  • MySQL:优化具有大量列的表

    我的用户表有超过 26 列 这正常吗 当这个用户表引起我的注意时 数据库已经标准化到第三级 有 26 列可以吗 或者在设计我应该做的数据库时 您是否使用了其他一些优化技术 More 对表进行分区是什么意思 26 列没有什么问题 但如果很少使
  • .Net Web API IActionFilter.OnActionExecuted 返回类型

    我在 Net Web API 上有一个应用程序 执行每个操作后 我想查看结果并更改其中的某些内容 假设我的 API controllerAction 看起来像 public Car Get 执行操作后 我想修改本例中 Car 的返回类型的属
  • 如何在Azure DocumentDB中执行类似于SQL连接的连接操作

    我在 Azure DocumentDB 中有一个集合 其中使用名为的 JSON 属性将文档聚集成 3 组集群名称对于每个文档 这 3 个文档集群的模板有点像这样 clusterName 客户信息 id CustInfo1001 客户名称 X
  • Python-替换所有以以下开头的单词

    我想知道如何删除所有以 saison 开头的单词 例如 test This is an example of saison1 saison7 and saison58 could be deleted too test test repla
  • 如何更改包含模式的行的第一次出现?

    我需要找到模式第一次出现的行 然后我需要用全新的行替换整行 我发现这个命令替换了模式的第一次出现 但不是整行 sed e 0 something s other thing
  • 在不聚焦窗口的情况下捕获关键点

    I have a application that always checks if a key like F12 is pressed It doesn t need to have in focus of my main window
  • 在 ReactJS 中重定向到上一页

    自从我进行检查后 我在重定向到上一页时遇到问题isLoggedIn 现在的问题是检查后isLoggedIn它重定向到默认路由 如何维护我所在的页面 我现在所做的是使用referer但它是未定义的 请帮我找到另一种方法 请检查我的代码如下 L
  • 从模型状态验证中删除对象

    我有两个模型 public class UserInfo public long ID get set Required StringLength 50 public string FirstName get set public bool
  • 如何获取matplotlib中的图例位置

    我正在尝试获取 matplotlib 中的图例位置 似乎 Legend get window extent 应该提供此功能 但无论图例位于何处 它都会返回相同的值 这是一个例子 from matplotlib import pyplot a
  • 异常后重试操作:请批评我的代码

    我的 Perl 应用程序使用的资源有时会暂时不可用 从而导致异常die 最值得注意的是 它访问由多个线程共享的 SQLite 数据库 并通过以下方式与其他应用程序共享 DBIx Class 每当发生此类异常时 应重试该操作 直到达到超时为止
  • 使 ViewPager 的高度等于 PagerAdapter 中最高项目的高度

    我有一个ViewPager并用它在视图之间滑动而不是 Fragments 当我给View Pagerwrap content 高度 它不显示任何内容 所以我必须给它一个固定的高度 但我遇到了另一个问题 当项目的高度大于固定高度时 视图无法正
  • 具有默认实现的接口和抽象类有什么区别? [复制]

    这个问题在这里已经有答案了 C 8 0 引入了一项新的语言功能 接口成员的默认实现 public interface IRobot void Talk string message Debug WriteLine message 新的默认接
  • 如何从 std::string 获取可写的 C 缓冲区?

    我正在尝试使用 MFC 移植我的代码CString to std string适用于微软Windows平台 我对某件事很好奇 在下面的例子中说 CString MakeLowerString LPCTSTR pStr CString str
  • 无法将下一个js部署到azure

    我正在尝试将我的 NEXTJS 应用程序部署到 azure 我使用安装了 Node 的 Linux 操作系统创建了一个 Web 应用程序 我的package json看起来像这样 name frontend version 1 0 0 de
  • 使用同一个ajax调用打开多个动态链接

    我正在显示多个使用相同的动态链接 ajax加载第一个链接上的内容很好 但不适用于其余链接 如何让它加载同一div中其他链接的内容 Html string a href link name name a div div Jquery href
  • 使用 GoogleMap 或 MapBox Direction API 在我的应用程序中实现我自己的导航

    我想在我的 Android 应用程序中为驾驶员实现导航地图 我不想使用 URL 方案打开 google 地图应用程序来导航 我更喜欢在我的应用程序中实现此导航功能 就像 Google 地图一样 我的要求很简单 将用户从一个地方导航到另一个地
  • shouldComponentUpdate 并非从未被调用

    请看一下我的代码 我尝试限制给定无状态组件的重新渲染 但这样做发现 shouldComponentUpdate 永远不会被调用 我已经从 styledComponents 中删除了包装器 之前有人报道过这种情况 但仍然绝对没有被调用 除此之
  • 在 JavaScript 中迭代带有“洞”的数组

    我有一个数组 其中一些项目将被删除 但有些循环仍在运行 所以我想简单地跳过删除对象的地方 我知道 for i in array 的语法应该执行此操作 因为它会迭代索引 但是我应该如何删除我的项目呢 因为当我执行 array 4 null 时