2014-09-25 4 views
0

전단지에서 각 마커의 배열과 그룹을 식별하는 ID가있는 객체를 포함하는 배열을 취하는 함수를 만들었습니다.Javascript : 배열을 보유하는 객체의 배열을 반복합니다.

나는이 배열을 가지고 :

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(); 
} 

그러나, 나는 "기능"키가 정의되지 않는 오류 :이 기능에 공급

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'} 
]; 

. 무슨 일이야?

답변

2

overlayMapArray[i][features].lengthoverlayMapArray[i].features.length (features 주위에 []) 없어야합니다. 또는 원하는 경우 overlayMapArray[i]['features'].length (자바 스크립트에서는 두 가지 중 하나를 선택할 수 있습니다).

코드에서 현재 수행중인 것은 features 변수의 값을 사용하려고하는 것입니다. 당신이 가지고 있지 않기 때문에, 당신은 ReferenceError을 얻습니다. 리터럴 (내 첫 번째 제안) 또는 대괄호 표기법 및 문자열 (두 번째 제안)으로 전환하면 속성 이름 features이 지정됩니다.

+1

무엇이 잘못되었는지 자세히 설명해 주셔서 감사합니다! – ohyeah

2

시도 :

overlayMapArray[i]['features'] 
+0

인용 부호로 둘러싼 기능이 완벽하게 작동했습니다. 감사. – ohyeah