【问题标题】:Multidimensional array push多维数组推送
【发布时间】:2014-04-06 23:33:04
【问题描述】:

我该怎么做?

"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 个不同的地图图标,我希望用户能够单独删除它们

【问题讨论】:

  • 如何声明和初始化my_arraytype的值是多少?
  • my_array[type] = []; 应该做什么和/或为什么最终会出现?
  • 我声明为:var my_array = []; ....这应该是清空数组my_array[type] = []; .....类型是“车辆”,“房屋”或“其他”跨度>
  • 如果真的是这样,它应该可以工作。请编辑并输入完整的代码。
  • 抱歉不清楚。我现在已经更新了主帖

标签: javascript arrays object multidimensional-array


【解决方案1】:

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

把你的函数改成这样:

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);
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-08-31
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多