This question already has answers here:
Remove items from array with splice in for loop
(5个答案)
4年前关闭。
考虑以下:
我的问题很简单:
如何删除
我如何错误地使用拼接,使得数组中只有2个对象而不是4个?
我期望发生什么?
每个项目添加到数组时,都需要从我要遍历的数组中删除。如果要迭代的数组中有4个对象,则
(5个答案)
4年前关闭。
考虑以下:
var _processSupplementalData = function(supfData) {
if (!supfData.length > 0) {
return;
}
var sectionData = {
label: supfData[0].label,
supplementalLinks: [],
}
supfData.forEach(function(data, index, object) {
sectionData.supplementalLinks.push(data);
supfData.splice(index, 1);
});
//dataObservableArray.push(sectionData);
console.log(sectionData);
}
我的问题很简单:
supfData
是4个对象的数组。有了代码,sectionData
对象在其末尾具有大小为2的supplementalLinks
数组。如何删除
splice
代码,现在supplementalLinks
arry大小正确:4。我如何错误地使用拼接,使得数组中只有2个对象而不是4个?
shift
为我做同样的事情。我期望发生什么?
每个项目添加到数组时,都需要从我要遍历的数组中删除。如果要迭代的数组中有4个对象,则
sectionData.supplementalLinks
数组中应有4个对象。 最佳答案
问题是您要对要迭代的数组进行变异。因此,在第一次迭代之后,您的数组仅包含三个项目,并且当它从数组中检索到第二个项目时,它将从修改后的数组中检索它。
如果您可以向后迭代,那么问题就消失了
for(var i=supfData.length - 1; i >-1; i++) {
sectionData.supplementalLinks.push(data);
supfdataCopy.splice(i, 1);
});
10-01 10:29