Javascript对象扩展

时间:2012-04-09 18:39:35

标签: javascript

我正在使用Leaflet在我的网站上绘制地图。我想动态构建图层切换器。构造函数接受一个对象,其中key是要在地图上显示的图层名称,value是图层对象本身。我正在从AJAX返回的数组动态构建切换器。我遇到的问题是我不知道如何将数组对象的值作为新对象的关键。我的代码如下所示:

$.ajax ({
    url: '...',
    data: { ... },
    dataType: 'json',
    success: function (data) {
        var overlayMaps = {};
        for (var i in data.elems) {
            var layer = new Layer (...);
            overlayMaps = $.extend ({}, overlayMaps, {data.elems[i].name : layer});
            map.addLayer (layer);
        }
        map.addControl (new L.Control.Layers (baseMaps, overlayMaps));
    }
});

我的问题是如何做第9行。 data.elems[i].name不想工作。我收到此错误missing : after property id,指向.之后的data。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我认为你只是在寻找bracket notation。而不是:

overlayMaps = $.extend ({}, overlayMaps, {data.elems[i].name, layer});

你想要这个:

var opts = {};
opts[data.elems[i].name] = layer;
overlayMaps = $.extend ({}, overlayMaps, opts);