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