我有一个元素数组,需要从中删除某些元素。问题是JavaScript似乎没有for each循环,如果我使用for循环,就会遇到问题,因为它基本上尝试检查数组边界之外的元素,或者由于索引更改而缺少数组中的元素。让我给你展示一下:
var elements = [1, 5, 5, 3, 5, 2, 4];
for(var i = 0; i < elements.length; i++){
if(elements[i] == 5){
elements.splice(i, 1);
}
}
问题在于当删除元素 elements[1] 后,elements[2] 就成为了新的 elements[1]。因此第一个问题是有些元素从未被检查过。另一个问题是 .length 改变,如果我硬编码边界,那么可能会尝试检查超出数组边界的元素。那么做这件非常简单的事情的最佳方法是什么?
elements.splice(i--, 1);
- Dagg Nabbit