2014-09-25 116 views
0

在单张中,我制作了一个函数,该函数使用一个数组来保存每个包含标记数组的对象,并使用一个ID来标识组。Javascript:通过一系列数组对象循环存储数组

我有此数组:

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

overlayMapArray[i][features].length应该overlayMapArray[i].features.length(约features没有[])。或者,如果你愿意,overlayMapArray[i]['features'].length(在JavaScript中,你也可以)。

你的代码当前正在做的是试图使用一个名为features的变量的值;既然你没有,你会得到一个ReferenceError。通过切换到文字(我的第一个建议)或括号符号和字符串(我的第二个建议),您指定属性名称features

+1

感谢您对错误的详细解释! – ohyeah 2014-09-25 10:02:34

2

尝试:

overlayMapArray[i]['features'] 
+0

引号中的环绕功能非常完美!谢谢。 – ohyeah 2014-09-25 09:46:39