J'ai travaillé sur un projet et développé un framework JavaScript. Le code original est d'environ 700 lignes, je n'ai donc collé que cette ligne. La méthode includes ne fonctionne pas sur Internet Explorer. Existe-t-il une solution à ça?
var row_cells = tbl_row.match(/<td[\s\S]*?<\/td>/g);
row.Cells = new Array();
if (onRowBindFuncText != null) { /*Fonksyon tanımlanmaışsa daha hızlı çalış*/
var cellCount = 0;
for (i = 0; i < row_cells.length; i++) {
var cell = new Cell();
$.each(this, function (k, v) {
if ((row_cells[i]+"").includes("#Eval(" + k + ")")) {
cell.Keys.Push(new Key(k,v));
... Le code continue
Parce que ce n'est pas supporté par IE, il ne l'est pas non plus dans Opera ( voir le tableau de compatibilité ), mais vous pouvez utiliser le suggéré polyfill =:
Polyfill
Cette méthode a été ajoutée à la spécification ECMAScript 2015 et n'est peut-être pas encore disponible dans toutes les mises en œuvre de JavaScript. Cependant, vous pouvez facilement polyfill cette méthode:
if (!String.prototype.includes) {
String.prototype.includes = function(search, start) {
'use strict';
if (typeof start !== 'number') {
start = 0;
}
if (start + search.length > this.length) {
return false;
} else {
return this.indexOf(search, start) !== -1;
}
};
}
@ Infer-on a montré une excellente réponse, mais cela pose un problème dans une situation donnée. Si vous utilisez la boucle for-in, elle renverra la fonction "includes" que vous avez ajoutée.
Voici un autre pollyfill.
if (!Array.prototype.includes) {
Object.defineProperty(Array.prototype, "includes", {
enumerable: false,
value: function(obj) {
var newArr = this.filter(function(el) {
return el == obj;
});
return newArr.length > 0;
}
});
}
Vous pouvez simplement utiliser .search ()> -1 qui se comporte exactement de la même manière. http://www.w3schools.com/jsref/jsref_search.asp
if ((row_cells[i]+"").search("#Eval(" + k + ")") > -1) {
Cette réponse sélectionnée concerne String. Si vous recherchez 'includes' sur un tableau, j'ai résolu mon problème en ajoutant le texte suivant à mon fichier polyfills.ts:
import 'core-js/es7/array';
Ceci est un polyfill pour les projets TypeScript, tiré de https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Global_Objects/Array/includes et modifié pour être valide TypeScript:
if (!Array.prototype.includes) {
Object.defineProperty(Array.prototype, 'includes', {
value: function(searchElement, fromIndex) {
if (this == null) {
throw new TypeError('"this" is null or not defined');
}
const o = Object(this);
// tslint:disable-next-line:no-bitwise
const len = o.length >>> 0;
if (len === 0) {
return false;
}
// tslint:disable-next-line:no-bitwise
const n = fromIndex | 0;
let k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
while (k < len) {
if (o[k] === searchElement) {
return true;
}
k++;
}
return false;
}
});
}
if (fullString.indexOf("partString") >= 0) {
//true
} else {
//false
}