[英]Javascript: looping through an array of objects that hold arrays
在传单中,我制作了一个函数,该函数接受一个数组,该数组包含多个对象,每个对象包含一个标记数组和一个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();
}
但是,我得到一个错误,即未定义“功能”键。 这是怎么回事?
尝试:
overlayMapArray[i]['features']
overlayMapArray[i][features].length
应该是overlayMapArray[i].features.length
( features
周围没有[]
)。 或者,如果愿意,也可以使用overlayMapArray[i]['features'].length
(在JavaScript中,您可以选择其中之一)。
您的代码当前正在做的是尝试使用一个称为features
的变量的值; 由于您没有,所以您会收到ReferenceError
。 通过切换为文字(我的第一个建议)或方括号符号和字符串(我的第二个建议),您可以指定属性名称features
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.