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

时间:2012-12-12 20:09:33

标签: javascript arrays foreach iteration

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

我知道(i in array)的语法应该这样做,因为它迭代索引,但是我应该如何删除我的项呢?因为当我做数组[4] = null时,我只是不关心并继续尝试使用4的值。

我也试过检查是否但是没有成功...... 谢谢

1 个答案:

答案 0 :(得分:2)

如果您想在不遗漏的情况下删除项目,则应使用.splice()

myarray.splice(idx, 1);

但是,如果您说想要那些洞,但想跳过它们,那么您可以使用delete删除项目(留下一个洞) ,并使用.forEach()进行迭代,跳过漏洞。

delete myarray[idx];

// ...

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

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

  • MDN .forEach() (忽略较短的补丁。这是一个糟糕的不合规版本。)