即不支持'包括'方法

Onu*_*can 46 javascript internet-explorer ecmascript-7

我一直在研究一个项目并开发一个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));
Run Code Online (Sandbox Code Playgroud)

......代码还在继续

ale*_*dro 64

因为它在IE中不受支持,所以Opera中也不支持它(参见兼容性表),但您可以使用建议的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;
    }
  };
}
Run Code Online (Sandbox Code Playgroud)


小智 37

@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;
      }
  });
}
Run Code Online (Sandbox Code Playgroud)


Pat*_*can 11

你可以使用.search()> -1,它的行为完全相同. http://www.w3schools.com/jsref/jsref_search.asp

if ((row_cells[i]+"").search("#Eval(" + k + ")") > -1) {
Run Code Online (Sandbox Code Playgroud)


pat*_*ley 7

这个选定的答案适用于字符串,如果您正在寻找数组中的“包含”,我通过将以下内容添加到我的 polyfills.ts 文件中解决了我在 Angular 项目中的问题:

import 'core-js/es7/array';
Run Code Online (Sandbox Code Playgroud)