Use the right tools for the right job. In this case:
for (var i = 0; i < data.length; i++) {
if (data[i].value === 5) {
data.splice(i--, 1);
}
}
or as @nnnnnn has suggested, loop backwards:
for (var i = data.length-1; i >= 0; i--) {
if (data[i].value === 5) {
data.splice(i, 1);
}
}
However, you should consider using Array.prototype.filter()
:
data = data.filter(function (e) {
return e.value !== 5;
});
or a utility function library such as lodash or underscore, which provide a function for removing elements from an array:
_.remove(data, function (e) {
return e.value === 5;
});
The benefit of the latter two is that your code becomes more readable.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…