Connecting Tech Pros Worldwide Forums | Help | Site Map

Regex match of string in array index?

Timmy
Guest
 
Posts: n/a
#1: Oct 31 '05
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?


RobG
Guest
 
Posts: n/a
#2: Oct 31 '05

re: Regex match of string in array index?


Timmy wrote:[color=blue]
> 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[/color]

Do you mean: ...popup.html?photo02.jpg
[color=blue]
>
> I then extract the search string like this:
>
> display = window.location.search;
> photo = display.substring (display.lastIndexOf('?') +1);[/color]

Your posted line will give:

photo = image02.jpg
[color=blue]
>
> 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?
>[/color]

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[i] == 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];





--
Rob
RobG
Guest
 
Posts: n/a
#3: Oct 31 '05

re: Regex match of string in array index?


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

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[i] != photo && images[++i] ) {
current_value = i;
}
if ( !images[i] ) {
// didn't find a match, deal with it
}

[...]


--
Rob
Timmy
Guest
 
Posts: n/a
#4: Nov 4 '05

re: Regex match of string in array index?


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

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

Closed Thread