Dieser Code funktioniert im Internet Explorer nicht. Irgendeine Alternative?
"abcde".includes("cd")
Dieser Code funktioniert im Internet Explorer nicht. Irgendeine Alternative?
"abcde".includes("cd")
Antworten:
String.prototype.includes
wird beim Schreiben in Internet Explorer (oder Opera) nicht unterstützt.
Stattdessen können Sie verwenden String.prototype.indexOf
. #indexOf
Gibt den Index des ersten Zeichens der Teilzeichenfolge zurück, wenn er sich in der Zeichenfolge befindet. Andernfalls wird er zurückgegeben -1
. (Ähnlich wie das Array-Äquivalent)
var myString = 'this is my string';
myString.indexOf('string');
// -> 11
myString.indexOf('hello');
// -> -1
MDN verfügt über eine Polyfüllung für die includes
Verwendung von indexOf
: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill
BEARBEITEN: Opera unterstützt includes
ab Version 28 .
EDIT 2: Aktuelle Versionen von Edge unterstützen die Methode. (Stand 2019)
Boolean
, können wir(myString.indexOf('string') > -1) // to get a boolean true or false
Oder legen Sie dies einfach in eine Javascript-Datei und haben einen guten Tag :)
String.prototype.includes = function (str) {
var returnValue = false;
if (this.indexOf(str) !== -1) {
returnValue = true;
}
return returnValue;
}
for...in
, sie wird wiederholt, String.prototype.includes
wenn sie wie folgt definiert ist.
return this.indexOf(str) !== -1;
include () wird von den meisten Browsern nicht unterstützt. Sie können entweder verwenden
-polyfill von MDN https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes
oder zu verwenden
-Index von()
var str = "abcde";
var n = str.indexOf("cd");
Welches gibt Ihnen n = 2
Dies wird weitgehend unterstützt.
for...in
! wird es wiederholt, String.prototype.includes
wenn Sie es so definieren.
Problem:
Versuchen Sie, im Internet Explorer unten (ohne Lösung) zu arbeiten, und sehen Sie sich das Ergebnis an.
console.log("abcde".includes("cd"));
Lösung:
Führen Sie nun die folgende Lösung aus und überprüfen Sie das Ergebnis
if (!String.prototype.includes) {//To check browser supports or not
String.prototype.includes = function (str) {//If not supported, then define the method
return this.indexOf(str) !== -1;
}
}
console.log("abcde".includes("cd"));
Ich hatte das gleiche Problem bei der Arbeit in Angular 5. Damit es direkt funktioniert, ohne selbst eine Polyfüllung zu schreiben, fügen Sie einfach die folgende Zeile zur Datei polyfills.ts hinzu:
import "core-js/es7/array"
Auch der tsconfig.json
Abschnitt lib könnte relevant sein:
"lib": [
"es2017",
"dom"
],
Für reagieren:
import 'react-app-polyfill/ie11';
import 'core-js/es5';
import 'core-js/es6';
import 'core-js/es7';
Problemlösung für - include (), find () usw.
Wenn Sie das Array.prototype.include()
in Javascript weiterhin verwenden möchten, können Sie dieses Skript verwenden:
github-script-ie-include
Konvertiert automatisch include () in die Funktion match (), wenn IE erkannt wird.
Eine andere Option ist immer diestring.match(Regex(expression))
Für mich geht das:
function stringIncludes(a, b) {
return a.indexOf(b) !== -1;
}
Sie können das gleiche mit tun !! und ~ Operatoren
var myString = 'this is my string';
!!~myString.indexOf('string');
// -> true
!!~myString.indexOf('hello');
// -> false
Hier ist die Erklärung der beiden Operatoren (!! und ~)
Was ist der !! (nicht nicht) Operator in JavaScript?
https://www.joezimjs.com/javascript/great-mystery-of-the-tilde/