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

I want to insert values dynamically to hash map

本文关键字:插入 哈希 映射 动态      更新时间:2023-09-26
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[data[11]].push(vmarks(;

但是我没有得到高于结果的结果,当我标记列表1[data[11](时,我只得到最后一个值,即第三vmark

我想要这样的输出= markerList1[data[11]] = {firstvmark, secondvmark, Thirdvmark};

你不能对

对象markerList1执行push,只能对数组执行

更改此内容

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

对此

markerList1[markerOpts.title] = vmarks;
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]放入变量中(

试试这个-

        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