.includes()无法在Internet Explorer中使用

时间:2016-04-12 13:10:48

标签: javascript

此代码在Internet Explorer中不起作用。还有其他选择吗?

"abcde".includes("cd")

10 个答案:

答案 0 :(得分:77)

正如您所写,

String.prototype.includes在Internet Explorer(或Opera)中不受支持。

相反,您可以使用String.prototype.indexOf#indexOf返回子字符串的第一个字符的索引(如果它在字符串中),否则返回-1。 (很像数组等效)

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

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

MDN使用includesindexOf进行了填充:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill

编辑:Opera从version 28开始支持includes

答案 1 :(得分:20)

或者只是把它放在一个Javascript文件中,祝你有个美好的一天:)

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

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

  return returnValue;
}

答案 2 :(得分:8)

大多数浏览器都不支持

includes()。您可以选择使用

- 来自MDN的 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes

或使用

-indexof()

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

这给你n = 2

这得到了广泛的支持。

答案 3 :(得分:4)

首先尝试在下面运行(无解决方案)以查看IE中的结果

console.log("abcde".includes("cd"));
现在执行以下解决方案并检查结果
if (!String.prototype.includes) {
  String.prototype.includes = function (str) {
    return this.indexOf(str) !== -1;
  }
}
console.log("abcde".includes("cd"));

答案 4 :(得分:3)

这可能会更好更短:

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

答案 5 :(得分:1)

在Angular 5中工作时,我遇到了同样的问题。为了使其直接工作而无需自己编写polyfill,只需将以下行添加到polyfills.ts文件中即可:

import "core-js/es7/array"

此外,tsconfig.json lib节可能是相关的:

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

答案 6 :(得分:0)

如果您想在javascript中继续使用Array.prototype.include(),可以使用以下脚本: github-script-ie-include 如果检测到IE,则会自动将include()转换为match()函数。

其他选项始终使用string.match(Regex(expression))

答案 7 :(得分:0)

您可以使用!!和〜运算符

 var myString = 'this is my string';

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

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

这是两个运算符(!!和〜)的解释

What is the !! (not not) operator in JavaScript?

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

答案 8 :(得分:0)

要做出反应:

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

问题解决-包括(),查找()等。

答案 9 :(得分:0)

它对我有用:

prettier-eslint