js调用函数存储在2D数组中

时间:2012-08-10 21:20:32

标签: javascript multidimensional-array

我有一个数组:

var markerArray = [];//global var
var markerCnt = 0;//global var
for(var x=0;x<10;x++){
    markerArray[markerCnt] = new Array(agency, address, marker, onMarkerClick);
    //agency and agency = string
    //marker = google maps marker
    //onMarkerClick = function
    markerCnt++;
}

如何调用指定的onMarkerClick函数? 我会这么做:

markerArray[0][3]();

2 个答案:

答案 0 :(得分:1)

作为替代解决方案,您也可以这样做:

var markerArray = [];
var markerCnt = 0;

for(var x=0;x<10;x++){
    markerArray[markerCnt] = {
        'agency' : agency, 
        'address' : address, 
        'marker' : marker, 
        'click' : onMarkerClick
    };
    markerCnt++;
}

//To call the click
markerArray[0].click();

答案 1 :(得分:0)

您的问题的答案是

无论维数多少,您都可以执行存储在数组中的任何函数。

// perfectly valid
markerArray[0][3]()

// as is this
someArray[0][1][7][2]()

除了回答您的问题之外,我建议使用一组对象,这样您就不必执行数组成员了。这样可以提高代码的可读性,如果你在6个月内查看代码,可以节省几个小时的时间。

var markerArray = [];//global var
var markerCnt = 0;//global var
for(var x=0;x<10;x++){
    markerArray[markerCnt] = {
        agency: agency
        address: address
        marker: marker
        onMarkerClick: onMarkerClick
    };
    //agency and agency = string
    //marker = google maps marker
    //onMarkerClick = function
    markerCnt++;
}

// then reference your function
markerArray[0].onMarkerClick();