javascript forEach循环可能会产生奇怪的输出
问题描述:
这个输出是如何产生任何意义的?也许我的想法是错误的,但它似乎相当描述什么它应该是洞javascript forEach循环可能会产生奇怪的输出
var dataset = [1, 2, 3];
dataset.forEach(function(element, index, array) {
// (index, how many to remove)
array.splice(0, 0);
});
returns [1,2,3] as expected
dataset.forEach(function(element, index, array) {
array.splice(0, 3);
});
returns [] as expected
dataset.forEach(function(element, index, array) {
array.splice(0, 1);
});
returns [3]
dataset.forEach(function(element, index, array) {
array.splice(0, 2);
});
returns [3]
这让我质疑我理解一切大声笑。我有一个更复杂的需求,其中对象的数组可以有属性“element.archived”
var dataset = [Object, Object, Object]
dataset.forEach(function(element, index, array) {
if (element.archived) array.splice(index, 1);
});
我想迭代这个数组,并删除有真正的这个属性值的所有对象。
methinks你只是使用错误的仪器进行过滤。看起来你需要简单的[array.filter](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) – Grundy
你为什么要在'array.splice'里面* 'forEach'?你真的*需要在阵列上运行'splice' 3次吗? –
@RocketHazmat,_完全是我的问题。 OP似乎对[splice'工作方式]有一个误解(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)。 – Andy