我的问题非常简单。 我正在尝试使用AJAX请求(数据)之后收到的另一个对象列表更新对象列表(localDatz)。 所以它包含两个循环..但是当我尝试更新两个对象时,只更新了一个对象。有些事情我真的不明白。 有什么帮助吗?
// fetch the localdata first
var localData = getAll();
// Loop through my 'localData'
$.each(localData.features, function(index,feature){
// Loop through the new data that are received
$.each(data.features, function(){
newFeature = this;
if (feature.properties.id==newFeature.properties.id){
// i think here is the problem..but can't figure out how to fix it
// I remove the old feature and push the new one
localData.features.splice(index,1);
localData.features.push(newFeature);
}
});
});
答案 0 :(得分:1)
您正在使用此代码修改您循环的列表:
if (feature.properties.id==newFeature.properties.id){
localData.features.splice(index,1);
localData.features.push(newFeature);
}
并且不仅可以修改列表条目,还可以修改顺序(推送到列表的末尾),这会使.forEach
循环变得混乱。使用简单:
if (feature.properties.id==newFeature.properties.id){
localData.features[ index ] = newFeature;
}
根本不需要使用.splice
。