微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在IE 11中实现传播算子?

如何解决如何在IE 11中实现传播算子?

对于某些“ 提取”操作,我试图在不使用价差运算符的情况下获得以下代码段工作,因为IE 11不了解价差运算符。

可在Chrome中运行,但不能在IE 11中运行:

html_col_width =[{"targets":0,"width":50},{"targets":1,"width":100},{"targets":2,"width":442}]

        ... some other code
        order: [
            [response.order_by_column,response.order_by]
        ],columnDefs: [
                      ...html_col_width,{other: stuff},{other: stuff}
    })

请参见列Defs:... html_col_width

在没有传播运算符的情况下如何实现以下目标:

columnDefs: [
          {"targets":0,"width":442},{other: stuff}
    })

我已阅读并尝试了以下操作,但是如果对象数组包含2个键,则此操作将无效:Spread Operator equivalent in IE - Javascript。提供的链接上的内容是关于合并的不同对象,这使问题大为不同。

解决方法

您所使用的称为“阵列解构”:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

正如您所说,它在IE中不起作用,这是因为它是ES6的一部分,并且(永远不会)在IE 11中不受支持。

解决该问题的一种方法是使用像Babel这样的编译器。

其他选项,是定义您自己的功能:

var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0,i = 0,il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s),k = 0,i = 0; i < il; i++)
    for (var a = arguments[i],j = 0,jl = a.length; j < jl; j++,k++)
        r[k] = a[j];
return r;

};

var html_col_width = [{ "targets": 0,"width": 50 },{ "targets": 1,"width": 100 },{ "targets": 2,"width": 442 }];
var columnDefs = __spreadArrays(html_col_width,[{ other: 'stuff' },{ other: 'stuff' }]);
,

您尝试过concat()吗?

html_col_width =[{"targets":0,"width":50},{"targets":1,"width":100},{"targets":2,"width":442}]

obj = {
  columnDefs: [
    {other: 'sds'},{others: 'dds'}
    ]
};

obj.columnDefs = obj.columnDefs.concat(html_col_width);
console.log(obj.columnDefs);
,

Spread properties是ECMAScript 2018的一部分,IE不支持。您可以使用Babel进行翻译。

如果您只想在非Node.js环境中使用它,则可以使用 babel-standalone 。您只需要在脚本中加载 babel-standalone ,并在脚本标签中输入要翻译的脚本,其类型为“ text / babel ”或“ text” / jsx ”,例如:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.18.1/babel.min.js"></script>
</head>
<body>
    <script type="text/babel">
        var html_col_width =[{"targets":0,"width":442}];
        var columnDefs = [
        ...html_col_width,{ other: "stuff" },{ other: "stuff" }
        ];
        console.log(JSON.stringify(columnDefs));
    </script>
</body>
</html>

IE中的结果:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。