我一直致力于一个项目并开发一个JavaScript框架。原始代码大约是700行,所以我只粘贴了这一行。 include方法在Internet Explorer上不起作用。对此有什么解决方案吗?
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));
......代码继续
答案 0 :(得分:63)
因为它在IE中不受支持,所以Opera(see the compatibility table)也不支持它,但您可以使用建议的polyfill:
<强>填充工具强>
此方法已添加到ECMAScript 2015规范中,但尚未在所有JavaScript实现中提供。但是,您可以轻松地填充此方法:
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;
}
};
}
答案 1 :(得分:32)
@ Infer-on显示了很好的答案,但在特定情况下有问题。如果你使用for-in循环,它将返回包含你添加的“包含”功能。
这是另一个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;
}
});
}
答案 2 :(得分:11)
你可以使用.search()&gt; -1的行为完全相同。 http://www.w3schools.com/jsref/jsref_search.asp
if ((row_cells[i]+"").search("#Eval(" + k + ")") > -1) {
答案 3 :(得分:4)
此选择的答案是针对String的,如果您要在数组上查找“ includes”,我通过将以下内容添加到polyfills.ts文件中解决了我的问题:
import 'core-js/es7/array';
答案 4 :(得分:2)
这是用于TypeScript项目的polyfill,取自https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Global_Objects/Array/includes,并被修改为有效的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;
}
});
}
答案 5 :(得分:0)
if (fullString.indexOf("partString") >= 0) {
//true
} else {
//false
}
答案 6 :(得分:0)
var includes = function(val, str) {
return str.indexOf(val) >= 0;
};
答案 7 :(得分:0)
jquery 有一个解决方案:
if ($.inArray(val,ar)===-1){
console.log ("val not found in ar");
}
else{
console.log ("val found in ar");
}
$.inArray(val,ar,[startingIndex]) 函数。