因为JavaScript中的每个循环都让我很生气

时间:2012-08-10 11:28:17

标签: javascript jquery

我的问题非常简单。 我正在尝试使用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);


            }

    });

});

1 个答案:

答案 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