javascript - 如何在 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}
})
见 columnDefs: ...html_col_width
如果没有扩展运算符,我如何实现以下目标:
columnDefs: [
{"targets":0, "width":50},
{"targets":1, "width":100},
{"targets":2, "width":442},
{other: stuff},
{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' }]);
推荐阅读
- sql - PostgreSQL如何在where运算符之后过滤
- sqlite - 带有任务计划程序的 Sqlite3 或使用命令提示符计划任务
- r - igraph中最低的共同祖先
- python - Django 表单不呈现。
- javascript - 如何删除旧的 SVG 元素,然后用新元素替换它?
- python-3.x - 如何使用列表单元格从列表中查看 DataFrame
- javascript - 无法从插槽子组件中的父级访问数据属性
- android - 如何在不指定密钥的情况下从 firebase 检索数据?
- regex - 正则表达式匹配单词后跟空格或空
- javascript - Netlify Lambda 函数不从 POST 请求中获取参数(使用 fetch / axios)