我想动态地将值插入哈希映射

时间:2014-09-07 08:48:00

标签: javascript jquery

var markerList1={};
var markerList=[];

并从for循环中添加迭代器值

function addSomething() // this function will multiple times from a for loop
    {

        image ='../css/abc/'+image[iterator]+'.png';
        var data = respData[iterator];
        var box = getbox(data);
        var markerOpts = {  
            position : coordinates[iterator],
            map      : map,
            icon     :image,
            title    :data[1],  
            id       : data[11]
        };

        var vmarks = new google.maps.Marker(markerOpts);

        markerList.push(vmarks);            
        markerList1[markerOpts.title].push(vmarks);
    }

每当我们调用函数时,我想将数组的值附加到相同的索引 markerList1 [数据[11]]推送(vmarks);

但我没有得到高于结果,当我在markerList1 [data [11])然后我只得到最后一个值,即thirdvmark

我想输出像这样= markerList1 [data [11]] = {firstvmark,secondvmark,thirdvmark};

3 个答案:

答案 0 :(得分:0)

您无法push对象markerList1,只能对数组进行操作。

更改此

markerList1[markerOpts.title].push(vmarks);`

到此

markerList1[markerOpts.title] = vmarks;

答案 1 :(得分:0)

markerList1[data[11]]在您推入内容之前从未初始化。

只需使用简单测试即可初始化一次:

if (! (data[11] in markerList1) ) {
    markerList1[data[11]] = [];
}
markerList1[data[11]].push(vmarks);

或者采用更短更安全的方式:

markerList1[data[11]] = markerList1[data[11]] || [];
markerList1[data[11]].push(vmarks);

(请将data[11]放入变量中)

答案 2 :(得分:0)

试试这个 -

        var vmarks = new google.maps.Marker(markerOpts);
        markerList.push(vmarks);//you already pushing vmarks to array            
        markerList1[markerOpts.title]=markerList;//assign array to your markerList1 map