将对象数组转换为对象

时间:2015-02-28 16:21:20

标签: jquery

我想迭代一个对象数组来创建一个对象,其属性是为迭代中的当前对象命名的,其值使用当前的数据。

$.each(data, function(idx, obj) {
    baseLayers[idx] = new Array();
    baseLayers[idx][obj.name] = new L.TileLayer(obj.url, {maxZoom: 18, id: obj.key, attribution: mbAttr});
});

最后,我想得到一个像这样的对象

baseLayers = {
        'Map Box': new L.TileLayer('https://{s}.tiles.mapbox.com/v3/{id}/{z}/{x}/{y}.png', {maxZoom: 18, id: 'examples.map-i875mjb7', attribution: mbAttr}),
        'OSM': new L.TileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {maxZoom: 18, attribution: mbAttr})
};

2 个答案:

答案 0 :(得分:2)

试试这个

var baseLayers = {}
$.each(data, function(idx, obj) {
    baseLayers[obj.name] = new L.TileLayer(obj.url, {maxZoom: 18, id: obj.key, attribution: mbAttr});
});

答案 1 :(得分:1)

看不到我认为你想要的数据:

var baseLayers = {};
$.each(data, function(idx, obj) {       
    baseLayers[obj.name] = new L.TileLayer(obj.url, {maxZoom: 18, id: obj.key, attribution: mbAttr});
});

您正在尝试添加未在预期输出中显示的额外级别