Ray
Ray

Reputation: 2728

js call function stored in 2D array

I have an 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++;
}

How do I call a specified onMarkerClick function? Would I just do:

markerArray[0][3]();

Upvotes: 0

Views: 255

Answers (2)

jwatts1980
jwatts1980

Reputation: 7356

As an alternative solution, you can also do this:

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

Upvotes: 1

Torsten Walter
Torsten Walter

Reputation: 5792

The answer to your question is yes.

You can execute any function stored in an array, no matter how many dimensions.

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

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

To go a little bit beyond than just answering your question, I would suggest using an array of objects so you don't have to execute an array member. This will increase readability of your code and saves you a few hours if you look at it in 6 months trying to figure out what you did.

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

Upvotes: 0

Related Questions