请考虑以下事项:
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个对象。
答案 0 :(得分:1)
问题是你正在改变你正在迭代的数组。因此,在第一次迭代之后,您的数组只有三个项目,当它从数组中检索第二个项目时,它将从已修改的数组中检索它。
如果你可以向后迭代,那么问题就会消失
for(var i=supfData.length - 1; i >-1; i++) {
sectionData.supplementalLinks.push(data);
supfdataCopy.splice(i, 1);
});