循环遍历数组并不间断地删除项目
在 JavaScript 中,使用 splice() 方法从数组中删除项目通常会出现以下情况:迭代数组而不遇到未定义值的挑战。在提供的代码中,在 for 循环中使用 splice() 会导致拍卖项目的秒数属性变得未定义,从而导致错误。
要解决此问题,请考虑以下替代方案:
1。在 splice() 之后递减循环索引
使用 splice() 删除项目后,您可以递减循环索引 (i) 以补偿数组的重新索引。这可确保下一次迭代从正确的索引继续。
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); i--; // Decrement the loop index } }
2.反向迭代
通过逆序迭代数组,splice()之后的重新索引不会影响迭代中的剩余项。
var i = Auction.auctions.length while (i--) { ... if (...) { Auction.auctions.splice(i, 1); } }
通过采用其中一种方法,您可以有效地迭代数组并删除项目,而不会遇到未定义值问题并确保循环过程的完整性。
以上是如何在循环时安全地删除 JavaScript 中的数组项?的详细内容。更多信息请关注PHP中文网其他相关文章!