Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Correct usage of IndexOf in JavaScript

I've got a simple JavaScript statement that reads a string and fires off a URL based of what it contains but I'm not sure if I've used IndexOf correctly so I just wanted to check.

Here is my code snippet:

<script type="text/javascript"> 

var mc_u1 = "somevariable";

if (mc_u1.indexOf("1|Accept") > 0) {
document.writeln("<img src=\"https://www.someurl1.com\">");
}

if (mc_u1.indexOf("1|Refer") > 0) {
document.writeln("<img src=\"https://www.someurl2.com\">");

}

if (mc_u1.indexOf("2|Accept") > 0) {
document.writeln("<img src=\"https://www.someurl3.com\">");

}

if (mc_u1.indexOf("2|Refer") > 0) {
document.writeln("<img src=\"www.someurl4.com\">");

}

</script>

As you can see from the code above, what I'm trying to do is based on the contents of the variable mc_u1 fire off a URL (which are different though I've just masked them for obvious reasons).

My question is, if the mc_u1 variable begins with say 1|Accept should I be using > -1 in the Javascript Statement or > 0?

Hope this is making sense!

like image 972
zik Avatar asked Nov 29 '25 16:11

zik


2 Answers

From MDN:

string.indexOf(searchValue[, fromIndex])

Returns the index within the calling String object of the first occurrence of the specified value, starting the search at fromIndex, returns -1 if the value is not found.

So in order to check if your variable starts with "1|Accept" you should check if indexOf returns 0.

like image 75
VisioN Avatar answered Dec 02 '25 07:12

VisioN


0 is the index of the first letter, so if your substring appears at the beginning of the string, > 0 will not match. So use > -1 for anywhere in the string and == 0 for always at the start of the string.

like image 32
Andy E Avatar answered Dec 02 '25 06:12

Andy E



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!