這個輸出是如何產生任何意義的?也許我的想法是錯誤的,但它似乎相當描述什麼它應該是洞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