由于数组大小,Javascript在主要浏览器中内存不足

由于数组大小,Javascript在主要浏览器中内存不足,javascript,arrays,loops,memory,Javascript,Arrays,Loops,Memory,我正在尝试创建一个数组,这将是Maasssivee…我在某处读到javascript可以创建一个高达42亿左右的数组。我尝试创建的阵列可能会达到万亿或更高。我甚至不知道从这里到哪里去。我将假设JS不是解决这个问题的合适解决方案,但我想尝试一下……它是针对客户端的,如果有多人同时使用它,我不希望让我的服务器陷入困境。另外,我并不想学习一门新的语言,因为我只是开始学习JS和代码 我是否可以在totalcombos函数中使用setTimeout(),0中断?时间并不是一个真正的问题,我不介意是否需要几

我正在尝试创建一个数组,这将是Maasssivee…我在某处读到javascript可以创建一个高达42亿左右的数组。我尝试创建的阵列可能会达到万亿或更高。我甚至不知道从这里到哪里去。我将假设JS不是解决这个问题的合适解决方案,但我想尝试一下……它是针对客户端的,如果有多人同时使用它,我不希望让我的服务器陷入困境。另外,我并不想学习一门新的语言,因为我只是开始学习JS和代码

我是否可以在
totalcombos
函数中使用
setTimeout(),0
中断?时间并不是一个真正的问题,我不介意是否需要几分钟来计算,但现在它只是崩溃了

我已经用一个专门的工作者尝试过了,但它仍然会使主机崩溃。工作代码就是我要发布的,因为主机代码与这个问题无关(它只编译原始对象并发布它们,然后接收回消息)

代码:(很抱歉弄得一团糟……我正在编写noob代码,只是一个爱好者)

onmessage=函数(事件){
//这已经在下面非常小的样本大小上进行了测试,但仍然会耗尽内存
//第一个数组中的所有对象的格式如下所示。
//{“pid”:“21939”,“姓名”:“约翰·史密斯”,“职位”:“QB”,“工资”:“9700”,“fppg”:“23”}
//“PID”对于每个对象都是唯一的,其他所有内容都可能出现在另一个对象中。
//没有重复的对象。
var qbs=**由10个对象组成的组,如上所述**
var rbs=**由10个对象组成的组,如上所述**
var wrs=**由10个对象组成的组,如上所述**
var tes=**由10个对象组成的组,如上所述**
var ks=**由10个对象组成的组,如上面所述**
var ds=**由10个对象组成的组,如上所述**
//这段代码在小集合(qbs、rbs、wrs)中运行得又快又好
函数totalcombos(){
var r=[],arg=参数,max=arg.length-1;
功能助手(arr,i){

对于(var j=0;j在处理数据时,无论使用何种语言或平台,通常最佳做法是只加载数据,否则会遇到错误或瓶颈等

如果您的数据存储在数据库、JSON文件、Web服务或API等位置(基本上是任何内容),您最好搜索这组数据,只检索您需要的数据,或者至少减少您试图遍历的数组数据的大小


打个比方,如果你想在一台只有2GB内存的PC上把整个互联网加载到内存中,那你的日子会很不好过

跟踪1万亿个对象需要超过1 TB的内存。你有1 TB的内存吗?一般来说,在处理大量同质数组项时应该使用。在这方面,我没有能力……我正在尝试获得这些对象的所有可能组合。我确信有人尝试过类似的方法ar之前。显然我没有tb的内存…顺便问一下,你是怎么计算的?我用1万亿*1字节=1万亿字节计算的≈ 1 TB。一个数组每个元素至少需要1个字节,通常需要几倍。顺便说一句,你说你的问题不是一个具体的问题,但这正是这里的问题。下面你会看到“你应该根据你所面临的实际问题提出实际的、可回答的问题。喋喋不休的、开放式的问题会降低我们网站的实用性,并将其他问题从头版推下。"这是一个非常开放的问题。什么的所有组合?你已经向我们抛出了170行代码,没有明确解释你想要完成什么,也没有任何示例输入。将你的问题简化为10个输入值的示例,我们可能会向你展示如何将其扩展到你需要的输入数量。这也包含了所有内容(在多个层次上)的特征。你说你想要(某事物的)所有组合。你想要它们做什么?这是要解决的问题。不是计算组合的中间问题。
onmessage = function(event){
//this has been tested on the very small sample size below, and still runs out of memory
//all the objects in these first arrays are formatted as follows.
// {"pid":"21939","name":"John Smith","position":"QB","salary":"9700","fppg":"23"}
// "PID" is unique to each object, everything else could appear in another object.
// There are no repeated objects.
var qbs = **group of 10 objects like above**
var rbs = **group of 10 objects like above**
var wrs = **group of 10 objects like above**
var tes = **group of 10 objects like above**
var ks = **group of 10 objects like above**
var ds = **group of 10 objects like above**

//This code works great and fast with small sets. ie (qbs, rbs, wrs)
function totalcombos() {
    var r = [], arg = arguments, max = arg.length-1;
    function helper(arr, i) {
        for (var j=0; j<arg[i].length; j++) {
            var a = arr.slice(0); // clone arr
            if(a.indexOf(arg[i][j]) != -1){
                j++;
            } else
                a.push(arg[i][j]);              
            if (i==max) {
                r.push(a);
            } else
                helper(a, i+1);
        }
    }
    helper([], 0);
    return r;
};
//WAY TOO BIG...commented out so as not to crash when run
//var tCom = totalcombos(qbs, rbs, wrs, tes, ks, ds);
//postMessage(tCom.length);
}