Javascript:循环访问包含数组的对象数组

时间:2014-09-25 09:43:48

标签: javascript loops leaflet mapbox

在传单中,我创建了一个函数,它接受一个包含对象的数组,每个对象包含一个标记数组和一个ID来标识该组。

我有这个数组:

var markerGroupArray = [
{ features: [L.marker([39.61, -105.02]).bindPopup('This is Littleton, CO.'),
L.marker([39.74, -104.99]).bindPopup('This is Denver, CO.'),
L.marker([39.73, -104.8]).bindPopup('This is Aurora, CO.'),
L.marker([39.77, -105.23]).bindPopup('This is Golden, CO.')], id: 'Group 1'},

{ features: [L.marker([39.51, -105.02]).bindPopup('Somewhere else'),
L.marker([39.64, -104.99]).bindPopup('Somewhere else'),
L.marker([39.63, -104.8]).bindPopup('Somewhere else'),
L.marker([39.67, -105.23]).bindPopup('Somewhere else')], id: 'Group 2'}
];

我提供给这个功能:

addOverlayMap: function (overlayMapArray) {
    for (var i = 0; i < overlayMapArray.length; i++)
    {
        var layerGroup = L.layerGroup();

        for (var j = 0; j < overlayMapArray[i][features].length; j++)
        {
            layerGroup.addLayer(overlayMapArray[i][features][j]);
        }

        this.overlayMapObject[overlayMapArray[i][id]] = layerGroup;
    }
    this.refreshLayerControl();
}

但是,我收到“功能”键未定义的错误。这是怎么回事?

2 个答案:

答案 0 :(得分:2)

尝试:

overlayMapArray[i]['features']

答案 1 :(得分:2)

overlayMapArray[i][features].length应为overlayMapArray[i].features.length[]周围没有features。或者,如果您愿意,可以overlayMapArray[i]['features'].length(在JavaScript中,您也可以这样做)。

您的代码目前正在尝试使用名为features的变量的值;因为你没有,所以得到ReferenceError。通过切换到文字(我的第一个建议)或括号表示法和字符串(我的第二个建议),您可以指定属性名称features