当前位置: 首页 > 面试题库 >

遍历数组并删除项目,而不会中断循环

吴浩皛
2023-03-14
问题内容

我有以下for循环,当我splice()用来删除项目时,然后得到的“秒数”是不确定的。我可以检查它是否未定义,但是我觉得可能有一种更优雅的方法来执行此操作。愿望是简单地删除一个项目并继续进行。

for (i = 0, len = Auction.auctions.length; i < len; i++) {
    auction = Auction.auctions[i];
    Auction.auctions[i]['seconds'] --;
    if (auction.seconds < 0) { 
        Auction.auctions.splice(i, 1);
    }           
}

问题答案:

当您执行时,该数组将被重新索引.splice(),这意味着删除索引时将跳过索引,并且缓存.length已过时。

要解决此问题,您可能需要在i后面减一.splice(),或者简单地反向迭代…

var i = Auction.auctions.length
while (i--) {
    ...
    if (...) { 
        Auction.auctions.splice(i, 1);
    } 
}

这样,重新索引不会影响迭代中的下一个项目,因为索引仅影响从当前点到数组末尾的项目,并且迭代中的下一个项目低于当前点。



 类似资料:
  • 问题内容: 我在Java中有一个Hashtable,想要迭代表中的所有值,并在迭代时删除特定的键值对。 怎么做? 问题答案: 您需要使用一个明确的遍历的条目集,而不是能够通过使用现有的增强的for循环语法的Java 6.下列示例循环的,对,去除其任何进入关键是空还是equals 0。

  • 问题内容: 我正在尝试遍历以下内容 我到目前为止所得到的: 有任何想法吗? 问题答案: 在您的代码中,元素是JSON对象的数组,而不是JSON对象本身。元件,和是JSON的一部分内部对象JSON阵列。 您需要遍历数组 版画 我不知道您的代码片段来自何处。

  • 我的购物车有两个功能,第一个是退货总价和商品总数量: 这两个函数返回这两个参数: 和: 我可以通过此功能销毁所有购物车会话: 如何删除特定购物车项目?我在使用这个方法,它的工作。但它不会改变总价和总数量:

  • 例如,我有5项: 当我们使用这样的映射方法时: 我们显示所有的项目; 但我只想展示其中的3个项目 我怎么能做到呢?(使用map方法或for方法或其他方法)

  • 问题内容: 我想实现一种jQuery实时搜索。但是,发送输入到服务器之前,我想删除我的阵列,它有3点或更少的字符的所有项目(因为在德国的语言,这些话通常可以在搜索方面被忽略),所以成为 现在我的问题是,并非所有项目都在我的for循环中被删除。例如,如果我删除打字“这是一个测试”“是”,则“ a”保持不变。 我认为问题是for循环,因为如果我删除带有拼接的项目,则数组的索引会更改,因此它会继续使用“

  • 我有一个包含许多子目录的目录,其中包括一个名为OLD的目录。这个旧文件夹也可能位于任何子目录中,并包含存档文件 根目录A 文件1。txt 文件2。txt 旧的 文件1。txt 文件1。txt 老 子目录E 文件7。txt 旧的 我需要在Talend中创建一个作业,该作业将查找所有OLD文件夹(在主目录和子目录中)并从该文件夹中删除文件。我可以使用tFilelist来屏蔽要删除的文件。但无法弄清楚如