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