簡體   English   中英

對象屬性名稱作為變量

[英]object property name as variable

我下面有這段代碼,我正在嘗試將maps.setColors({ “中的屬性名稱” color “替換為drivers數組中的值:

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

從根本上講,它不能正常工作,我希望循環動態生成如下代碼:

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

我該怎么辦?

謝謝

像這樣的事情應該做的工作:

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

我認為您應該這樣說:

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

帶剎車。 請參閱此Codepen中的控制台輸出: http ://codepen.io/anon/pen/vKGNbB?editors=1111

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM