Bu kod internet explorer'da çalışmaz. Herhangi bir alternatif var mı?
"abcde".includes("cd")
Bu kod internet explorer'da çalışmaz. Herhangi bir alternatif var mı?
"abcde".includes("cd")
Yanıtlar:
String.prototype.includes yazarken Internet Explorer'da (veya Opera'da) desteklenmiyor.
Bunun yerine kullanabilirsiniz String.prototype.indexOf. #indexOfeğer dizge içindeyse, alt dizenin ilk karakterinin dizinini döndürür, aksi takdirde döndürür -1. (Array eşdeğeri gibi)
var myString = 'this is my string';
myString.indexOf('string');
// -> 11
myString.indexOf('hello');
// -> -1
MDN'de includeskullanmak için bir çoklu dolgu vardır indexOf: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill
DÜZENLEME: Opera includes, sürüm 28'den itibaren desteklemektedir .
EDIT 2: Edge'in mevcut sürümleri yöntemi desteklemektedir. (2019 itibariyle)
Boolean, yapabiliriz(myString.indexOf('string') > -1) // to get a boolean true or false
Veya bunu bir Javascript dosyasına koyun ve iyi günler :)
String.prototype.includes = function (str) {
var returnValue = false;
if (this.indexOf(str) !== -1) {
returnValue = true;
}
return returnValue;
}
for...inyinelemeyin, String.prototype.includesbu şekilde tanımlanmışsa yineleme yapacaktır .
return this.indexOf(str) !== -1;
include () çoğu tarayıcı tarafından desteklenmez. Seçenekleriniz ya kullanmak
MDN'den -polyfill https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes
veya kullanmak
-indeksi()
var str = "abcde";
var n = str.indexOf("cd");
Bu da size n = 2 verir
Bu geniş çapta desteklenmektedir.
for...in! , bunu String.prototype.includesböyle tanımlarsanız yinelenecektir .
Sorun:
Aşağıda (çözüm olmadan) Internet Explorer'dan çalıştırmayı deneyin ve sonucu görün.
console.log("abcde".includes("cd"));
Çözüm:
Şimdi aşağıdaki çözümü çalıştırın ve sonucu kontrol edin
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"));
Angular 5'te çalışırken de aynı sorunu yaşadım. Kendiniz bir polyfill yazmadan doğrudan çalışmasını sağlamak için aşağıdaki satırı polyfills.ts dosyasına ekleyin:
import "core-js/es7/array"
Ayrıca, tsconfig.jsonkitaplık bölümü de alakalı olabilir:
"lib": [
"es2017",
"dom"
],
Tepki için:
import 'react-app-polyfill/ie11';
import 'core-js/es5';
import 'core-js/es6';
import 'core-js/es7';
Sorun çözme - içerir (), bul () vb.
Array.prototype.include()Javascript'i kullanmaya devam etmek istiyorsanız, şu komut dosyasını kullanabilirsiniz:
github-script-ie-include
IE'yi algılarsa include () işlevini otomatik olarak match () işlevine dönüştürür.
Diğer seçenek her zamanstring.match(Regex(expression))
Benim için çalışıyor:
function stringIncludes(a, b) {
return a.indexOf(b) !== -1;
}
İle aynı şeyi yapabilirsiniz !! ve ~ operatörler
var myString = 'this is my string';
!!~myString.indexOf('string');
// -> true
!!~myString.indexOf('hello');
// -> false
işte iki operatörün açıklaması (!! ve ~)
Nedir !! JavaScript'te (değil) operatörü?
https://www.joezimjs.com/javascript/great-mystery-of-the-tilde/