Javascript 使用jquery-Request/Handling代码加载JS数组的更快方法
我对数组变量进行了以下操作:Javascript 使用jquery-Request/Handling代码加载JS数组的更快方法,javascript,jquery,drop-down-menu,Javascript,Jquery,Drop Down Menu,我对数组变量进行了以下操作: var states_list = { '1': ['747','748','749','750','751','752','753','754','755','756','757','758','759','760','761','762','763','764','765','766','767','768','769'], '2': ['500','501','502','503','504','505','506','507','508'],
var states_list = {
'1': ['747','748','749','750','751','752','753','754','755','756','757','758','759','760','761','762','763','764','765','766','767','768','769'],
'2': ['500','501','502','503','504','505','506','507','508'],
'3': ['516','517','518','519','520','521','522'],
'4': ['523','524','525','526','527','528','529','530','531'],
'5': ['544','545','546','547','548','549'],
'6': ['537','538','539','540','541','542','543'],
'7': ['550','551','552','553','554','555','556','557','558','559'],
'8': ['560','561','562','563','564','565','566','567','568','569','570','571','572','573','574','575','576','577','578','579','580','581','582','583','584','585'],
'9': ['586','587','588','589','590','591','592','593','594','595','596','597','598','599','600','601','602','603','604','605','606','607','608','609','610','611','612','613','614','615','616','617','618','619','620','621'],
'10': ['622','623','624','625','626','627','628','629','630','631','632','633','634','635','636','637','638','639','640','641','642','643','644','645','646','647','648','649','650','651','652','653','654','655','656','657','658'],
'11': ['659','660','661','662','663','664','665','666','667','668','669','670','671','672'],
'12': ['673','674','675','676','677','678','679','680','681','682','683','684','685','686','687','688','689'],
'13': ['690','691','692','693','694','695','696','697','698','699'],
'14': ['700','701','702','703','704','705','706','707','708','709','710','711','712','713'],
'15': [],
'16': ['509','510','511','512','513','514','515'],
'17': ['714','715','716','717','718','719'],
'18': ['720','721','722','723','724','725','726','727','728','729','730'],
'19': ['731','732','733','734','735','736','737','738'],
'20': ['739','740','741','742','743','744','745','746'],
'21': ['770','771','772','773','774','775','776','777','778'],
'22': ['779','780','781','782','783','784','785','786','787','788','789','790','791','792','793','794','795','796','797','798'],
'23': ['799','800','801','802','803','804','805','806','807','808','809','810','811','812','813','814','815','816','817','818','819','820','821','822','823'],
'24': ['824','825','826','827','828','829','830','831'],
'25': ['832','833','834','835','836','837','838','839','840','841','842','843'],
'26': ['844','845','846','847','848'],
'27': ['849','850','851','852','853','854','855','856','857','858','859','860','861','862','863','864','865','866','867','868','869','870','871'],
'28': ['872','873','874','875','876','877','878','879','880','881'],
'29': ['882','883','884','885','886','887','888','889','890','891'],
'30': ['892','893','894','895','896','897','898','899','900','901','902'],
'31': ['903','904','905','906','907','908','909','910','911','912','913','914','915','916','917','918','919','920','921'],
'32': ['922','923','924','925','926','927','928','929','930','931','932','933','934','935','936'],
'33': ['937','938','939','940','941','942','943','944','945','946','947','948','949','950','951','952','953','954','955','956','957','958','959','960','961','962','963','964','965'],
'34': ['532','533','534','535','536']
}
这一个(因其尺寸而省略):
我想快速将这些数据填充到我的选择框中。到目前为止,我有以下代码:
if(typeof selectedProvince != 'undefined' && typeof selectedState != 'undefined') {
// Iterate through var districts_list to look for province ID based on var selectedState value
$.each(districts_list, function(key, value) {
if( ($.inArray(''+selectedState, value)) >= 0 ) {
// Assign var selectedProvince with province ID
selectedDistrict = key;
}
});
// Iterate through var states_list to look for province ID based on var selectedState value
$.each(states_list, function(key, value) {
if( ($.inArray(''+selectedDistrict, value)) >= 0 ) {
// Assign var selectedProvince with province ID
selectedProvince = key;
}
});
$(function() {
// Pre-select province
$('#id_province option[value=' + selectedProvince + ']').attr('selected', true);
// Initiate filterOn plugin (the cities based on province filter)
$('#id_district').filterOn('#id_province', states_list);
// Pre-select district
$('#id_district option[value=' + selectedDistrict + ']').attr('selected', true);
$('#id_state').filterOn('#id_district', districts_list);
// Pre-select state
$('.id_state option[value=' + selectedState + ']').attr('selected', true);
});
}
代码可以正确执行,并且两个选择框都可以填充,问题是花费的时间太长
我想知道我是否可以加快速度,或者放置一个微调器或加载条,直到它正确填充
我受限于JSON数据的结构,这意味着我无法对其进行任何更改
我希望有人能帮我。谢谢
编辑#1
javascript和html位于单独的文件中
下面是包含该选择框的HTML
<select name="" id="id_district" style="width:104%; height:37px;" ></select>
<select name="id_state" id="id_state" style="width:104%; height:37px;" >
<option></option>
</select>
您有太多数据,正在使用
.inArray
和搜索正确的州或地区。每个
都需要线性时间,就像迭代每个项目并进行比较以找到包含地区/州的数组一样
我建议预先计算一个地区所属的省份,并将其存储在一个大数组中,或者将此查找表保存在服务器上的JSON文件中。然后使用ajax加载此查找表
例如,假设我预先计算了一个名为DistrictProvinceMapping的大数组。我需要找到该地区所属的省份。我只是通过DistrictProvinceMapping[690]获取代码,它返回13
然后,我可以预先选择我的省选择框
这将把搜索的时间复杂度降低到O(1)
或者,如果不受约束且数据存储在数据库中,创建一个充当查找表的SQL视图,并使用Ajax让服务器进行查找,这样就不必在客户端计算机上加载大数组。您有太多的数据,并使用
.inArray
和搜索正确的州或地区。每个都需要线性时间,因为它们遍历每个项目并执行相应的操作比较以查找包含地区/州的数组
我建议预先计算一个地区所属的省份,并将其存储在一个大数组中,或者将此查找表保存在服务器上的JSON文件中。然后使用ajax加载此查找表
例如,假设我预先计算了一个名为DistrictProvinceMapping的大数组。我需要找到该地区所属的省份。我只是通过DistrictProvinceMapping[690]获取代码,它返回13
然后,我可以预先选择我的省选择框
这将把搜索的时间复杂度降低到O(1)
或者,如果不受约束且数据存储在数据库中,则创建一个SQL视图作为查找表,并使用Ajax让服务器进行查找,这样就不必在客户端计算机上加载大数组。我是瞎了还是错过了什么?我看不到创建选择框的部分。如果没有完整的代码,很难说在哪里可以更快。您应该编辑您的问题并添加完整的请求/处理代码。此连接''+selectedState
?@eisbehr i修改了question@madalinivascu我有一个拼写错误,它应该是一个空的空格“u”@jeremyrawan为什么你需要在那个空格里留一个空的空格?我是瞎了还是只是错过了什么?我看不到创建选择框的部分。如果没有完整的代码,很难说在哪里可以更快。您应该编辑您的问题并添加完整的请求/处理代码。此连接''+selectedState
?@eisbehr i修改了question@madalinivascu我有一个打字错误,它应该是一个空白“'@JeremyRIrawan为什么你需要在那个空白处留一个空白?
<select name="" id="id_district" style="width:104%; height:37px;" ></select>
<select name="id_state" id="id_state" style="width:104%; height:37px;" >
<option></option>
</select>