LastIndexOf ne fonctionne pas dans Internet Explorer

J'ai le code suivant:

var currentServerlist = []; var newServerIp = document.getElementById('add_server').value; if( CurrentServerIP != newServerIp ) { $('#failoverServers td.row_selector').each(function() { var row = $(this).closest('tr'); var serverIp = row.find('td[rel=ip]').text(); currentServerlist.push(serverIp); }); if(currentServerlist.lastIndexOf(newServerIp) != -1) { return true; } return false; } 

Mais je trouve que lastIndexOf ne fonctionne pas dans InternetExplorer (il le fait dans Chrome).

Comment puis-je réparer cela?

Selon la table de compatibilité ES5 , Array.prototype.lastIndexOf est pris en charge dans tous les navigateurs sauf IE8 et ci-dessous.

Si vous devez prendre en charge ces navigateurs, vous pouvez utiliser l'un des différents polyfills disponibles (ou une solution de polyfill ES5 plus complète ).

Certains navigateurs (IE) ne prennent pas en charge beaucoup de propriétés JavaScript. Je trouve généralement une solution sur mdn:

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/lastIndexOf

Le code là-bas:

 if (!Array.prototype.lastIndexOf) { Array.prototype.lastIndexOf = 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 = len; if (arguments.length > 1) { n = Number(arguments[1]); if (n != n) n = 0; else if (n != 0 && n != (1 / 0) && n != -(1 / 0)) n = (n > 0 || -1) * Math.floor(Math.abs(n)); } var k = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n); for (; k >= 0; k--) { if (k in t && t[k] === searchElement) return k; } return -1; }; } 

LastIndexOf semble uniquement être implémenté dans IE9 / 10. Vous devez utiliser une cale pour l'appuyer. Voir: ES5-shim , ligne 509-535 en particulier.