.includes () Internet Explorer'da çalışmıyor


111

Bu kod internet explorer'da çalışmaz. Herhangi bir alternatif var mı?

"abcde".includes("cd")

33
İki yıl sonra IE hala desteklemiyor.
— nu everest

4
IE'nin iyileşmesini beklemek ... IE'nin iyileşmesini beklemek gibidir.
— Rob_M

1
@nueverest 3 yıl demek istiyorsun değil mi? : D
— Josh

3
Birisi herkese bir iyilik yapıp IE için depoları silsin. Bitir şunu.
— zero_cool

2 yıl daha - IE hala desteklemiyor
— Piotrek Hryciuk

Yanıtlar:


138

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)


IE tarafından desteklenmeyen tek işlev include () mı? Veya IE tarafından desteklenmeyen başka typcript veya JavaScript işlevleri var mı?
— Abdullah Feroz

10
Bir ihtiyacımız olursa Boolean, yapabiliriz(myString.indexOf('string') > -1) // to get a boolean true or false
— Aakash

32

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;
}

Bu çoklu dolguyu kullanırsanız, dizenizi ile for...inyinelemeyin, String.prototype.includesbu şekilde tanımlanmışsa yineleme yapacaktır .
— Patrick Roberts

10
Daha kısa versiyon:return this.indexOf(str) !== -1;
— Andrew

1
Diziler için: Array.prototype.includes = function (elt) {return this.indexOf (elt)! == -1; }
— LePatay

9

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.


MDN'den polyfill kullanırsanız, dizenizi ile yinelemeyin for...in! , bunu String.prototype.includesböyle tanımlarsanız yinelenecektir .
— Patrick Roberts

6

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"));


4

Bu daha iyi ve daha kısa olabilir:

function stringIncludes(a, b) {
    return a.indexOf(b) >= 0;
}

indexOf, IE tarafından desteklenmiyor
— Some_Dude

1
IE11'de mükemmel çalışıyor. Belki IE10'da yok, ancak günümüzde hala bu sürümü kullanan pek insan yok.
— Andrew

3

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"
],

Sen arkadaşım tam bir cankurtaransın!
— CodeMan03

3

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.


1

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))


1

Benim için çalışıyor:

function stringIncludes(a, b) {
      return a.indexOf(b) !== -1;
}

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.