Jak opravit Array indexOf() v JavaScriptu pro prohlížeče Internet Explorer

Udělejte to takto...

if (!Array.prototype.indexOf) {

}

Kompatibilita doporučená společností MDC.

Obecně platí, že detekční kód prohlížeče je velké ne.


Případně můžete použít funkci jQuery 1.2 inArray, která by měla fungovat ve všech prohlížečích:

jQuery.inArray( value, array [, fromIndex ] )

Úplný kód by pak byl tento:

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(obj, start) {
         for (var i = (start || 0), j = this.length; i < j; i++) {
             if (this[i] === obj) { return i; }
         }
         return -1;
    }
}

Opravdu důkladnou odpověď a kód na tuto otázku a také na další funkce pole najdete v otázce Stack Overflow Oprava funkcí pole JavaScript v aplikaci Internet Explorer (indexOf, forEach atd.) .