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>