2016-04-12 17 views

risposta

24

String.prototype.includes è, come si scrive, non è supportato in Internet Explorer (o Opera)

Invece è possibile utilizzare String.prototype.indexOf. #indexOf restituisce l'indice del primo carattere della sottostringa se si trova nella stringa, altrimenti restituisce -1. (Proprio come l'Array equivalente)

var myString = 'this is my string'; 
myString.indexOf('string'); 
// -> 11 

myString.indexOf('hello'); 
// -> -1 

NDP ha un polyfill per includes utilizzando indexOf: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill

+0

su Opera 46.0 funziona –

6

include() non è supportato dalla maggior parte dei browser. Le opzioni sono o di utilizzare

-polyfill da MDN https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes

o per utilizzare

-indexof()

var str = "abcde"; 
var n = str.indexOf("cd"); 

che vi dà n = 2

Questo è ampiamente supportato .

+0

Questa la risposta corretta. Usa polyfilll da MDN – Sangar82

+0

Se usi polyfill da MDN, _do non itera la tua stringa con 'for ... in'! _, Itererà su' String.prototype.includes' se lo definisci così. –

5

O semplicemente mettere questo in un file JavaScript e hanno una buona giornata :)

String.prototype.includes = function (str) { 
    var returnValue = false; 

    if (this.indexOf(str) !== -1) { 
    returnValue = true; 
    } 

    return returnValue; 
} 
+0

Se si utilizza questo polyfill, non iterare la stringa con 'for ... in', itererà su' String.prototype.includes' se è definito in questo modo. –

0

Se si desidera continuare a utilizzare il Array.prototype.include() in javascript è possibile utilizzare questo script: github-script-ie-include che converte automaticamente l'inclusione() alla funzione match() se rileva IE.

altra opzione utilizza sempre la string.match(Regex(expression))

Problemi correlati