【发布时间】:2018-04-18 15:28:39
【问题描述】:
我正在开发一个大型 javascript 应用程序,不出所料,它在 IE11 中确实很困难(Chrome = 8 秒,nodejs= 8 秒,IE11 = 35 秒)。
所以我做了一些分析,发现这个方法是我的时间槽。我已经完成了我能想到的所有更改 - 是否还有其他可以改进的性能改进?
const flatten = function(arr, result) {
if (!Array.isArray(arr)) {
return [arr];
}
if(!result){
result = [];
}
for (let i = 0, length = arr.length; i < length; i++) {
const value = arr[i];
if (Array.isArray(value)) {
flatten(value, result);
}
else {
result.push(value);
}
}
return result;
};
该方法被多次调用,数组较小(最多 10 个字符串项,深度不超过 2 级)。
【问题讨论】:
-
一些 JavaScript 引擎的
array.push(n)比array[array.length] = n快,其他的则相反。您可能会检查哪个适用于 IE,然后使用它更快找到的那个。 -
@T.J.Crowder - 感谢您的评论。
push()在所有这些(IE、Chrome 和 nodejs)中似乎都更快...... -
好的。 (Chrome 和 Node.js 相同并不奇怪——它们使用相同的 JavaScript 引擎 V8。)
标签: javascript algorithm performance internet-explorer