对象中的循环不起作用

时间:2014-06-08 10:22:37

标签: javascript for-loop iteration

我的传单对象_test看起来像这样 enter image description here 有4050个元素,对于所有这些元素,我尝试运行循环并放置标签

    var a = Object.keys(_test);
    console.log(a.length);
    j = 0;
    for (var i = 0; i < a.length - 1; i++) {
        var b = _test[a[i]];
        var vdc = L.polygon(b._latlngs);
        vdc_name = b.feature.properties.NAME_4;
        var labelLocation = new L.LatLng(vdc.getBounds().getCenter().lat, vdc.getBounds().getCenter().lng);
        var labelTitle = new L.LabelOverlays(labelLocation, vdc_name);
        VDC_labels.addLayer(labelTitle);
        console.log(vdc_name, j);
        j++}

console.log(a.length);控制台中的输出是4050.但是

的最后一个输出
console.log(vdc_name, j); 

Sidin 1841 ,这意味着循环只运行1841次。谁能帮助我找出我做错了什么?

我也试过这个,但结果是一样的

for (ath in _test) {
        var b = _test[ath];
        var vdc = L.polygon(b._latlngs);
        // console.log(i);
        // i++
        vdc_name = b.feature.properties.NAME_4; //label content
        var labelLocation = new L.LatLng(vdc.getBounds().getCenter().lat, vdc.getBounds().getCenter().lng);
        var labelTitle = new L.LabelOverlays(labelLocation, vdc_name);
        VDC_labels.addLayer(labelTitle);
    }

1 个答案:

答案 0 :(得分:0)

解决。 实际上问题在于数据,即在_test对象中,1842nd元素是一个多边形,与所有其他元素(多边形)不同,所以在访问坐标时

var b = _test[a[i]]; var vdc = L.polygon(b._latlngs);

b没有属性_latlngs所以循环中断..