Regex match of string in array index?

T

Timmy

I'm working on a simple click-through image gallery and I have images with
captions in two arrays like this:

var current_value="0";

var images = new Array
("photo01.jpg",
"photo02.jpg",
"photo02.jpg");

var captions = new Array
("caption1",
"caption2",
"caption3");

The large image views are shown in a window which I can link to with a
search substring URL defining which image to display: popup.html?image02.jpg

I then extract the search string like this:

display = window.location.search;
photo = display.substring (display.lastIndexOf('?') +1);

By knowing the search substring value (in this case photo02.jpg) I would
like a regex function to search through the images array and find the match
(in this case index 1) and therafter use that index value to set the
current_value variable.

Does anyone have an idea how the searching and matching is done?
 
R

RobG

Timmy said:
I'm working on a simple click-through image gallery and I have images with
captions in two arrays like this:

var current_value="0";

var images = new Array
("photo01.jpg",
"photo02.jpg",
"photo02.jpg");

var captions = new Array
("caption1",
"caption2",
"caption3");

The large image views are shown in a window which I can link to with a
search substring URL defining which image to display: popup.html?image02.jpg

Do you mean: ...popup.html?photo02.jpg
I then extract the search string like this:

display = window.location.search;
photo = display.substring (display.lastIndexOf('?') +1);

Your posted line will give:

photo = image02.jpg
By knowing the search substring value (in this case photo02.jpg) I would
like a regex function to search through the images array and find the match
(in this case index 1) and therafter use that index value to set the
current_value variable.

Does anyone have an idea how the searching and matching is done?

There are a couple of options, one is to loop through the array looking
for a matching image name:

var current_value = 0;
for (var i=0, n=images.length; i<n && 0 == current_value; ++i){
if (images == photo) current_value = i;
}

If you are only using 'current_value' to get the caption, why not store
the image name and caption in an object:

var photoCaption = {
"photo01.jpg" : "caption 1 text",
"photo02.jpg" : "caption 2 text",
"photo03.jpg" : "caption 3 text"
};
...

Having extracted the photo name from the search string:

var caption = photoCaption[photo];
 
R

RobG

RobG wrote:
[...]
var current_value = 0;
for (var i=0, n=images.length; i<n && 0 == current_value; ++i){

Actually that isn't great because if you get a match at i=0 it will
still loop through all the images. Here's a slightly better version:

var i=0;
while ( images != photo && images[++i] ) {
current_value = i;
}
if ( !images ) {
// didn't find a match, deal with it
}

[...]
 
T

Timmy

Do you mean: ...popup.html?photo02.jpg

Yes thanks for figuring that and for the various solutions. I'll test.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,902
Latest member
Elena68X5

Latest Threads

Top