gpt4 book ai didi

javascript - 高效的 Javascript 组合功能,不会导致浏览器崩溃

转载 作者:行者123 更新时间:2023-12-02 19:34:53 25 4
gpt4 key购买 nike

我有一个程序,其中涉及以下函数来计算给定数组的所有可能组合:

function combinations(arr, k) {
var i,
subI,
sub,
combinationsArray = [],
next;
for (i = 0; i < arr.length; i++) {
if (k === 1) {
combinationsArray.push([arr[i]]);
} else {
sub = combinations(arr.slice(i + 1, arr.length), k - 1);
for (subI = 0; subI < sub.length; subI++) {
next = sub[subI];
next.unshift(arr[i]);
combinationsArray.push(next);
}
}
}
return combinationsArray;
};

例如:

 combinations([1,2,3],2);

返回:

[[1,2],[1,3],[2,3]]

我在程序中经常使用它,特别是对于 12 个对象的数组参数,从该数组返回两个对象的所有可能组合。有 66 种可能的组合。在我的程序中,我需要多次检查此函数返回的数组的对象元素的属性值,以比较它们,对它们运行条件等。但是当我调用像这样使用组合函数的函数时,浏览器崩溃(firefox 返回消息:“此页面上的脚本可能正忙,或者可能已停止响应。您可以立即停止脚本,在调试器中打开脚本,或让脚本继续。”)它始终是一部分上述组合函数中被调用的函数会崩溃。

我发现了这个:http://www.nczonline.net/blog/2009/01/13/speed-up-your-javascript-part-1/它是提高重复调用函数(例如组合函数)的代码效率的好方法。

如何有效地将组合功能与 ncsonline 的方法集成以防止浏览器崩溃?

最佳答案

这是使用 web workers 的良好候选者。 ,它在单独的线程上运行您的代码。

这样,您就不会因密集计算而锁定 UI 线程(这就是您现在所看到的)。

关于javascript - 高效的 Javascript 组合功能,不会导致浏览器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11038001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com