如何在IE 11中实现展开运算符?

问题描述 投票:0回答:3

对于某些“提取”操作,我试图在不使用扩展运算符的情况下完成以下代码片段,因为 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}
    })

参见columnDefs:...html_col_width

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

columnDefs: [
          {"targets":0, "width":50},
          {"targets":1, "width":100},
          {"targets":2, "width":442},
          {other: stuff},
          {other: stuff}
    })

我已阅读并尝试了以下内容,但如果对象数组包含 2 个键,则此方法不起作用:IE 中的 Spread 运算符等效 - Javascript。提供的链接中的内容是关于“合并”不同的对象,这使得问题相当不同。

javascript internet-explorer ecmascript-6 datatables spread-syntax
3个回答
2
投票
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' }]);



0
投票
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);



0
投票
Spread 属性

是 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":50}, {"targets":1, "width":100},{"targets":2, "width":442}]; var columnDefs = [ ...html_col_width, { other: "stuff" }, { other: "stuff" } ]; console.log(JSON.stringify(columnDefs)); </script> </body> </html>

IE 中的结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.