2016-06-10 94 views
0

我有下面這段代碼,我試圖使屬性名稱「color」中的「maps.setColors({」從驅動器陣列的值代替:對象屬性的名稱作爲變量

var drivers = { 
    "drivers":[ 
     { 
      "driver_id":"101", 
      "driver_name":"B", 
      "truck_capacity":1000, 
      "truck_color":"#00FF00", 
      "truck_radio":"checked" 
     }, 
     { 
      "driver_id":"102", 
      "driver_name":"A", 
      "truck_capacity":2000, 
      "truck_color":"#FF0000", 
      "truck_radio":"" 
     } 
    ] 
}; 

for (var prop in drivers) { 
     if (drivers.hasOwnProperty(prop)) { 
      for (var prop2 in drivers[prop]) { 
       var color = drivers[prop][prop2]['truck_color']; 
       maps.setColors({ 
        color: { 
         current: 0, 
         polygonOptions: { 
          fillColor: color, 
          fillOpacity: 0.7, 
          strokeColor: '#2143AA', 
          strokeWeight: 2, 
          suppressUndo: true 
         } 
        } 
       }); 
       google.maps.event.addDomListener(document.getElementById(id), 'click', function() { 
        maps.setColor(color); 
       }); 
      } 
     } 
    } 

這是不這麼basiclly工作我想循環動態生成這樣的代碼:

maps.setColors({ 
    '#00FF00': { 
     current: 0, 
     polygonOptions: { 
      fillColor: '#00FF00', 
      fillOpacity: 0.7, 
      strokeColor: '#2143AA', 
      strokeWeight: 2, 
      suppressUndo: true 
     } 
    }, 
    '#FF0000': { 
     current: 0, 
     polygonOptions: { 
      fillColor: '#FF0000', 
      fillOpacity: 0.7, 
      strokeColor: '#2143AA', 
      strokeWeight: 2, 
      suppressUndo: true 
     } 
    } 
}); 

我該怎麼做,請嗎?

感謝

+0

in'ES2015'您可以編寫'{[color]:{}}'其他方法您應該定義所有這些key-by-key:'o [color] = { };' –

+0

你確定這是正確的JSON? – Abhishek

回答

1

像這樣的東西應該做的工作:

var params = {}; 
for (var prop2 in drivers[prop]) { 
    var color = drivers[prop][prop2]['truck_color']; 
    params[color] = { 
     current: 0, 
     polygonOptions: { 
      fillColor: color, 
      fillOpacity: 0.7, 
      strokeColor: '#2143AA', 
      strokeWeight: 2, 
      suppressUndo: true 
     } 
    }; 
} 
maps.setColors(params); 
0

我認爲你應該把這樣的:

var prove = { 
       [color]: { 
        current: 0, 
        polygonOptions: { 
         fillColor: color, 
         fillOpacity: 0.7, 
         strokeColor: '#2143AA', 
         strokeWeight: 2, 
         suppressUndo: true 
        } 
       }}; 

隨着brakets。 請參閱此codepen中的控制檯輸出:http://codepen.io/anon/pen/vKGNbB?editors=1111

+0

這不起作用 –

+0

你使用[color]的輸出是什麼? –

+0

'對象{ #00FF00:Object { current:0, polygonOptions:Object {} } }'' –