9

Code:

function showlayer(name){
    var size = js_array.length
    var index = js_array.indexOf(name);
    var plusOne = js_array[index+1];
    document.write("" + name + "<br />" + js_array + "<br />" + index + "<br />" +
                   plusOne + "<br />" )
    ...
}

Output:

301
300,299,301,290,303,304,302,310,291,306,308,305,307,292,294,295,309
-1
300

All possible values of name are in the array, but for some reason indexOf() never finds them. Whats up?

4
  • Are you comparing numbers to strings? Commented Jan 29, 2013 at 20:57
  • 1
    This isn't the problem you are specifically seeing here, but it is worth pointing out that Array.indexOf() isn't available on IE8 and lower. See here: stackoverflow.com/questions/2790001/…. Commented Jan 29, 2013 at 21:45
  • @pseudosavant Yeah I know. Hope it won't be too much of an issue Commented Jan 29, 2013 at 23:47
  • That stackoverflow link has a polyfill to add support for Array.indexOf() to IE6-8 if you need it. I prefer to only support IE9 and up now-a-days, but there are still a lot of IE8 people out there. Commented Jan 30, 2013 at 17:31

1 Answer 1

29

Try this instead:

...
var index = js_array.indexOf(parseInt(name, 10)); // so that it does not try to compare strings...
...
Sign up to request clarification or add additional context in comments.

6 Comments

@gta0004 happy to help ^_^
@gta0004: Apparently, name is not an int.
@SLaks hehe that is most probably true.
@gta0004 output typeof name and your shall see ^_^
Or, simply cast the key to Int: array.indexOf(+name).
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.