我在代码中看到了spread syntax的几种用法。例如:
function tree2table(tree) {
var children = tree["children"];
if (children === undefined) return [];
var result = [];
for (var i = 0; i < children.length; i++) {
var child = children[i];
var link = [child["name"], tree["name"], child["size"]];
result.push(link);
result.push(...tree2table(child))
}
return result
}
但是,IE中不支持扩展语法。有谁知道改变result.push(...tree2table(child))
的最佳方式是什么,以便它变得像以前一样跨浏览器和效率?
答案 0 :(得分:4)
您可以使用function#apply
,它将参数作为数组。
apply()
方法调用具有给定this
值的函数,并将arguments
作为数组(或类似数组的对象)提供。< / p>
Array.prototype.push.apply(result, tree2table(child));
答案 1 :(得分:0)
Array.prototype.push.apply(result, values)
修改而不是制作数组的副本
const result = []
const values = ['a', 'b']
Array.prototype.push.apply(result, values)
console.log(result)
&#13;
function tree2table(tree) {
var children = tree["children"];
if (children === undefined) return [];
var result = [];
for (var i = 0; i < children.length; i++) {
var child = children[i];
var link = [child["name"], tree["name"], child["size"]];
result.push(link);
Array.prototype.push.apply(result, tree2table(child))
}
return result
}
支持以下文档模式:Quirks,Internet Explorer 6标准,Internet Explorer 7标准,Internet Explorer 8标准,Internet Explorer 9标准,Internet Explorer 10标准,Internet Explorer 11标准。