多维数组推送

时间:2014-04-06 23:33:05

标签: javascript arrays object multidimensional-array

我该怎么办?

“type”=某个字符串

ShowMarkers('vehicles');
ShowMarkers('houses');

HideMarkers('vehicles');

var my_array = [];
function ShowMarkers(type)
{
    //code
    var gmm = new google.maps.Marker(
    {
        //code
    });
    my_array[type].push(gmm);
    //Uncaught TypeError: Cannot call method 'push' of undefined 
}

function HideMarkers(type)
{
    for(var i = 0; i < my_array[type].length; i++)
    {
        my_array[type][i].setMap(null); //Hide the markers
    }
    my_array[type] = []; //Empty the array of `type`
}

我基本上有3个不同的地图图标,我希望用户能够单独删除

2 个答案:

答案 0 :(得分:0)

my_array[type] = [];移至顶部,并确保type的值为字符串或数字

答案 1 :(得分:0)

如果您在my_array[type]之前致电ShowMarkers,则问题是HideMarkers未定义。

将您的功能更改为:

function ShowMarkers(type)
{
    //code
    var gmm = new google.maps.Marker(
    {
        //code
    });
    if (!(my_array[type] instanceof Array)) {
        my_array[type] = [];
    }
    my_array[type].push(gmm);
}