Подтвердить что ты не робот

.includes() не работает в Internet Explorer

Этот код не работает в Internet Explorer. Любая альтернатива?

"abcde".includes("cd")
4b9b3361

Ответ 1

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 есть полизаполнение для includes с использованием indexOf: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill

ОБНОВЛЕНИЕ: Opera поддерживает includes начиная с версии 28.

ОБНОВЛЕНИЕ 2: текущие версии Edge поддерживает метод. (по состоянию на 2019 г.)

Ответ 2

Или просто поместите это в файл Javascript и получите хороший день:)

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

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

  return returnValue;
}

Ответ 4

Этот может быть лучше и короче:

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

Ответ 5

Проблема:

Попробуйте запустить ниже (без решения) из Internet Explorer и посмотрите результат.

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

Ответ 6

У меня была такая же проблема при работе в Angular 5. Чтобы заставить его работать напрямую без написания polyfill самостоятельно, просто добавьте следующую строку в файл polyfills.ts:

import "core-js/es7/array"

Также может быть tsconfig.json раздел lib tsconfig.json:

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

Ответ 7

Для реакции:

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

Решение проблемы для - includes(), find() и т.д.

Ответ 8

Если вы хотите продолжать использовать Array.prototype.include() в javascript, вы можете использовать этот скрипт: github-script-ie-include, который автоматически преобразует функцию include() в функцию match(), если обнаруживает IE.

Другой вариант - всегда использовать string.match(Regex(expression))

Ответ 10

Это работает для меня:

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