Javascript 我是否已达到阵列中对象的最大数量?

Javascript 我是否已达到阵列中对象的最大数量?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我在Javascript中嵌入了一个大型数组,用于开发Chrome扩展。扩展基本上应该包含超过23000个条目的数据集。这对我来说都是新鲜事。为任何不公正道歉;我会尽量把这件事说清楚 在大约13.200个唯一的条目中,扩展工作正常。如果我尝试添加更多的唯一条目,扩展将不再工作(即,不会显示在地址栏中) 现在,一开始我认为这是一个大小问题,但情况似乎并非如此,因为扩展可以处理多达90.000个条目,只要13.200点之外的条目是13.200点之前条目的副本(即没有新的Unique) 这是导致问题的

我在Javascript中嵌入了一个大型数组,用于开发Chrome扩展。扩展基本上应该包含超过23000个条目的数据集。这对我来说都是新鲜事。为任何不公正道歉;我会尽量把这件事说清楚

在大约13.200个唯一的条目中,扩展工作正常。如果我尝试添加更多的唯一条目,扩展将不再工作(即,不会显示在地址栏中)

现在,一开始我认为这是一个大小问题,但情况似乎并非如此,因为扩展可以处理多达90.000个条目,只要13.200点之外的条目是13.200点之前条目的副本(即没有新的Unique)

这是导致问题的代码部分:

var dataSet = [ 
["Example Company A", "23.760.90","22.760.90","0","21.000.00","0","0","0","0","0","0" ],
["Example Company B", "13.800.90","22.860.90","0","21.000.00","0","0","0","0","0","0" ]
["Example Company C", "63.960.90","10.460.90","0","21.000.00","0","0","0","0","0","0" ]
//etc. (23.000 times)
];
在做了一些研究之后,我发现问题可能与解析源代码有关-如下所述:

“总结一下对Juan回答的评论困境:我必须将我的大数组拆分为一系列较小的数组,然后再将它们进行数组#concat(),但这还不够。我还必须将它们放入单独的var语句中。如下所示:

所以我尝试了这个建议,但是没有任何区别。也就是说,扩展没有识别出任何超过13.200点的新条目

在这一点上,我不确定再尝试什么,因为我甚至不确定确切的问题是什么

我的问题

  • 这到底是不是一个尺寸问题

  • 在拆分阵列时,我是否遗漏了什么

  • 是否有其他方法可以为Chrome扩展包含数据集?(例如Ajax调用)

下面是background.js文件:

[前面的一段代码放在这里(即var数据集=[]))

$(文档).ready(函数(){
$('#demo').html('');
chrome.tabs.query({currentWindow:true,active:true},函数(tabs){
函数解析url(url){
解析的_url={}
if(url==null | | url.length==0)
返回解析后的url;
协议i=url.indexOf('://');
解析的_url.protocol=url.substr(0,协议_i);
剩余的url=url.substr(协议i+3,url.length);
domain_i=剩余的_url.indexOf('/');
domain\u i=domain\u i==-1?剩余的\u url.length-1:domain\u i;
parsed_url.domain=剩余的_url.substr(0,domain_i);
解析的_url.path=domain_i==-1 | | domain_i+1==剩余的_url.length?null:剩余的_url.substr(domain_i+1,剩余的_url.length);
domain_parts=parsed_url.domain.split('.');
交换机(域长度){
案例2:
已解析的_url.subdomain=null;
已解析的_url.host=域_部分[0];
parsed_url.tld=域_部分[1];
打破
案例3:
已解析的_url.subdomain=域_部分[0];
解析的_url.host=domain_parts[1];
parsed_url.tld=域_部分[2];
打破
案例4:
已解析的_url.subdomain=域_部分[0];
解析的_url.host=domain_parts[1];
parsed_url.tld=domain_parts[2]+'.+domain_parts[3];
打破
}
parsed_url.parent_domain=parsed_url.host+'。+parsed_url.tld;
返回解析后的url;
}
var-website=parseURL(制表符[0].url).host+“”+parseURL(制表符[0].url).tld;
$('#示例')。数据表({
“数据”:数据集,
“栏目”:[
{“标题”:“1”},
{“标题”:“2”},
{“标题”:“3”},
{“标题”:“4”},
{“标题”:“5”},
{“标题”:“6”},
{“标题”:“7”},
{“标题”:“8”},
{“标题”:“9”},
{“标题”:“10”},
],
“订单”:[],
“分页”:正确,
“长度变化”:错误,
“搜索”:{
“搜索”:网站
}
});
});
});

我不认为大小是问题所在。如果您看到了,我可以在该JavaScript数组中创建100k个位置。唯一的位置。您的第一个代码在第二个元素后没有逗号。请使用一些js linter检查扩展代码,可能有更多的错别字。MDN将数组的length属性的值声明为“length属性的值是一个带正号的整数,值小于32次方(232)”的2,我希望它与数组的最大容量有一定的相关性。@kuis01,通过修复逗号键入是否解决了问题?
var arr0 = [...];
var arr1 = [...];
var arr2 = [...];
/* ... */
var bigArray = arr0.concat(arr1, arr2, ...);
$(document).ready(function() {
$('#demo').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="example"></table>' );

chrome.tabs.query({currentWindow: true, active: true}, function(tabs){

    function parseURL(url){
parsed_url = {}

if ( url == null || url.length == 0 )
    return parsed_url;

protocol_i = url.indexOf('://');
parsed_url.protocol = url.substr(0,protocol_i);

remaining_url = url.substr(protocol_i + 3, url.length);
domain_i = remaining_url.indexOf('/');
domain_i = domain_i == -1 ? remaining_url.length - 1 : domain_i;
parsed_url.domain = remaining_url.substr(0, domain_i);
parsed_url.path = domain_i == -1 || domain_i + 1 == remaining_url.length ? null : remaining_url.substr(domain_i + 1, remaining_url.length);

domain_parts = parsed_url.domain.split('.');
switch ( domain_parts.length ){
    case 2:
      parsed_url.subdomain = null;
      parsed_url.host = domain_parts[0];
      parsed_url.tld = domain_parts[1];
      break;
    case 3:
      parsed_url.subdomain = domain_parts[0];
      parsed_url.host = domain_parts[1];
      parsed_url.tld = domain_parts[2];
      break;
    case 4:
      parsed_url.subdomain = domain_parts[0];
      parsed_url.host = domain_parts[1];
      parsed_url.tld = domain_parts[2] + '.' + domain_parts[3];
      break;
}

parsed_url.parent_domain = parsed_url.host + '.' + parsed_url.tld;

return parsed_url;
}

    var website = parseURL(tabs[0].url).host+"."+parseURL(tabs[0].url).tld;

    $('#example').dataTable( {
        "data": dataSet,
        "columns": [
            { "title": "1" },
            { "title": "2" },
          { "title": "3" },
          { "title": "4" },
          { "title": "5" },
          { "title": "6" },
          { "title": "7" },
          { "title": "8" },
          { "title": "9" },
          { "title": "10" },


        ],
        "order": [],
        "paging": true,
        "lengthChange": false,
        "search": {
            "search": website
        }
    });
});
});