我有一个数组,其中一些项目将被删除;但是一些循环仍在它们上运行,所以我想简单地跳过我删除对象的地方
我知道 for(i in array) 的语法应该这样做,因为它在索引上迭代,但是我应该如何删除我的项目呢?因为当我执行 array[4] = null 时,我的 for 不在乎并继续尝试使用 4 处的值。
我还尝试检查是否 !null 但没有成功...谢谢
我有一个数组,其中一些项目将被删除;但是一些循环仍在它们上运行,所以我想简单地跳过我删除对象的地方
我知道 for(i in array) 的语法应该这样做,因为它在索引上迭代,但是我应该如何删除我的项目呢?因为当我执行 array[4] = null 时,我的 for 不在乎并继续尝试使用 4 处的值。
我还尝试检查是否 !null 但没有成功...谢谢
如果你想在不留洞的情况下移除一个项目,你应该使用.splice()
myarray.splice(idx, 1);
但是如果你说你想要那里的洞,但想跳过它们,那么你可以使用delete
删除项目(留下一个洞),并.forEach()
用于迭代,跳过洞。
delete myarray[idx];
// ...
myarray.forEach(function(item, i) {
// holes will be skipped
});
要支持 IE8 及更低版本的旧浏览器,您需要为forEach()
.
.forEach()
(忽略较短的补丁。这是一个糟糕的不兼容版本。)