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