0

I used the code described here but now, when I do a "for ... in ..." cicle, it gets the function "indexOf" as an index position of the array...

Example Code:

var the_array=new Array();                  
for (key in the_array){
    console.log(key +"  -  "+the_array[key]);
} 

This code shows this in the console:

indexOf  -  function (searchElement /*, fromIndex */ ) {  
    "use strict";  
    if (this == null) {  
       throw new TypeError();  
    }  
    var t = Object(this);  
    var len = t.length >>> 0;  
    if (len === 0) {  
        return -1;  
    }  
    var n = 0;  
    if (arguments.length > 0) {  
        n = Number(arguments[1]);  
        if (n != n) { // shortcut for verifying if it's NaN  
            n = 0;  
        } else if (n != 0 && n != Infinity && n != -Infinity) {  
            n = (n > 0 || -1) * Math.floor(Math.abs(n));  
        }  
    }  
    if (n >= len) {  
        return -1;  
    }  
    var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);  
    for (; k < len; k++) {  
        if (k in t && t[k] === searchElement) {  
            return k;  
        }  
    }  
    return -1;  
}

How could I prevent the function from appearing as a key on the array?

Btw, I know that I can use the inArray function of jquery but, in this case, I would like to use the "indexOf" function...

Cristiano Santos
  • 2,157
  • 2
  • 35
  • 53
  • Does indexOf exist on IE8? Because I had trouble and I had to find an indexOf function (and define it on my JS) for a project of mine. – Panagiotis Apr 04 '12 at 11:51
  • It does not exist and I added it too. The problem is that I'm using some "for ... in" cicles in the whole project and now they return the keys and the prototype properties of the array... – Cristiano Santos Apr 04 '12 at 12:01

1 Answers1

2

It's a bad idea to use for...in on arrays, for this and other reasons. See my answer here:

Why is 'for(var item in list)' with arrays considered bad practice in JavaScript?

Community
  • 1
  • 1
Tim Down
  • 318,141
  • 75
  • 454
  • 536