.includes () इंटरनेट एक्सप्लोरर में काम नहीं कर रहा है


105

यह कोड इंटरनेट एक्सप्लोरर में काम नहीं करता है। कोई विकल्प?

"abcde".includes("cd")

33
दो साल बाद IE अभी भी इसका समर्थन नहीं करता है।
एनयू एवरेस्ट

4
IE के बेहतर होने की प्रतीक्षा करना पसंद है ... IE के बेहतर होने की प्रतीक्षा करना।
राब_एम

1
@nueverest आपका मतलब 3 साल सही है? : डी
जोश

2
कोई हर किसी पर एहसान करता है और IE के लिए रेपो (एस) को हटाता है। बस इसे खत्म करो।
जीरो_कूल

एक और 2 साल - IE अभी भी इसका समर्थन नहीं करता है
पिओट्रेक हिरिसुक

जवाबों:


132

String.prototype.includes जैसा कि आप लिखते हैं, इंटरनेट एक्सप्लोरर (या ओपेरा) में समर्थित नहीं है।

इसके बजाय आप उपयोग कर सकते हैं String.prototype.indexOf#indexOfस्ट्रिंग में होने पर सबस्ट्रिंग के पहले वर्ण का इंडेक्स देता है, अन्यथा यह वापस आ जाता है -1। (ऐरे समतुल्य के समान)

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

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

MDN का includesउपयोग करने के लिए एक पॉलीफ़िल है indexOf: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill

EDIT: ओपेरा 28 संस्करण केincludes रूप में समर्थन करता है ।

EDIT 2: एज के वर्तमान संस्करण विधि का समर्थन करते हैं। (2019 तक)


शामिल है () केवल फ़ंक्शन जो IE द्वारा समर्थित नहीं है? या अन्य टाइपस्क्रिप्ट या जावास्क्रिप्ट फ़ंक्शंस हैं जो IE द्वारा समर्थित नहीं हैं?
अब्दुल्ला फ़िरोज़

10
अगर हमें जरूरत है Boolean, हम कर सकते हैं(myString.indexOf('string') > -1) // to get a boolean true or false
आकाश

32

या सिर्फ एक जावास्क्रिप्ट फ़ाइल में यह रखो और एक अच्छा दिन है :)

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

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

  return returnValue;
}

यदि आप इस पॉलीफ़िल का उपयोग करते हैं, तो अपनी स्ट्रिंग को for...inइसके साथ न जोड़ें , String.prototype.includesअगर यह इस तरह से परिभाषित किया गया है, तो यह पुनरावृति करेगा ।
पैट्रिक रॉबर्ट्स

10
छोटा संस्करण:return this.indexOf(str) !== -1;
एंड्रयू

1
सरणियों के लिए: Array.prototyp.includes = function (elt) {यह वापस करें ।indexOf (elt)! == -1; }
LePatay

9

शामिल है () अधिकांश ब्राउज़रों द्वारा समर्थित नहीं है। आपके विकल्प या तो उपयोग करने के लिए हैं

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

या उपयोग करने के लिए

-के सूचकांक()

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

जो आपको n = 2 देता है

यह व्यापक रूप से समर्थित है।


यदि आप एमडीएन से पॉलीफ़िल का उपयोग करते हैं, तो अपनी स्ट्रिंग के साथ पुनरावृति न करें for...in! , String.prototype.includesअगर आप इसे इस तरह परिभाषित करते हैं , तो यह पुनरावृत्ति करेगा ।
पैट्रिक रॉबर्ट्स

6

संकट:

इंटरनेट एक्सप्लोरर से नीचे (समाधान के बिना) चलाने की कोशिश करें और परिणाम देखें।

console.log("abcde".includes("cd"));

उपाय:

अब नीचे हल चलाएं और परिणाम की जांच करें

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

यह बेहतर और छोटा हो सकता है:

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

indexOf IE द्वारा समर्थित नहीं है
Some_Dude

1
यह IE11 में पूरी तरह से ठीक काम करता है। शायद यह IE10 में नहीं है, लेकिन शायद ही लोग आजकल उस संस्करण का उपयोग कर रहे हैं।
एंड्रयू

3

मुझे कोणीय 5 में काम करते समय भी यही समस्या थी। इसे सीधे पॉलीफ़िल लिखे बिना काम करने के लिए, बस निम्नलिखित लाइन को पॉलीफ़िल्स में जमा करें। फाइल:

import "core-js/es7/array"

इसके अलावा, tsconfig.jsonप्रासंगिक अनुभाग प्रासंगिक हो सकता है:

"lib": [
  "es2017",
  "dom"
],

आप मेरे मित्र पूर्ण जीवनसाथी हैं!
कोडमैन ०३

2

प्रतिक्रिया के लिए:

import 'react-app-polyfill/ie11';
import 'core-js/es5';
import 'core-js/es6';
import 'core-js/es7';

के लिए मुद्दा हल - शामिल (), खोजें (), और इसी तरह ।।


1

यदि आप Array.prototype.include()जावास्क्रिप्ट का उपयोग करते रहना चाहते हैं, तो आप इस स्क्रिप्ट का उपयोग कर सकते हैं: github-script-ie- इसमें वह सम्मिलित है जो स्वचालित रूप से शामिल () मैच () फ़ंक्शन के लिए है यदि यह IE का पता लगाता है।

अन्य विकल्प हमेशा उपयोग कर रहा हैstring.match(Regex(expression))



-1

आप के साथ भी ऐसा ही कर सकते हैं !! और ~ ऑपरेटरों

 var myString = 'this is my string';

 !!~myString.indexOf('string');
 // -> true

 !!~myString.indexOf('hello');
 // -> false

यहाँ दो ऑपरेटरों की व्याख्या (!! और ~)

क्या है !! (नहीं) जावास्क्रिप्ट में ऑपरेटर?

https://www.joezimjs.com/javascript/great-mystery-of-the-tilde/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.