我有这个JavaScript对象,其中包含城市列表以及状态上的依赖关系详细信息。迭代关联数组耗时太长
var cityList = {
'1' : ['CITY_CODE_A','City A', '2','11','2'],
'2' : ['CITY_CODE_B','City B','','11',''],
'3' : ['CITY_CODE_C','City C', '','11','']
};
var stateList = {
'11' : ['STATE_CODE_A', 'State A'],
'12' : ['STATE_CODE_B', 'State B'],
'13' : ['STATE_CODE_C', 'State C'],
'14' : ['STATE_CODE_D', 'State D']
};
根据所选择的状态下,键被传递到在城市列表中的值(指数在阵列3元素)的键匹配的功能,并且如果发现形式的<select>
一个选项标签。 下面是代码:
$.each(cityList, function(key, value) {
if(selectedVal == value[3]){
$("select[id='"+selectid+"']").append('<option value="'+value[0]+'" code="'+key+'">' +value[1] + '</option>');
}
});
现在,当这个城市的名单长到50K记录(2 MB)WIZ的状态有50K个城市(性能测试)上面的代码需要2分钟加载Windows上的城市列表下拉列表7机器在本地运行代码。尝试使用本机for
/in
-loop,但没有得到满意的结果。
关于如何减少时间的任何想法?我是否需要更改JS对象结构?
一次在这么多的记录上工作将需要大量的资源....如果你想支持这么多的记录,你需要检查分页解决方案 –
你是动态创建一个下拉菜单与50K选项?即使它瞬间发生,那么做什么呢? – Jon
@ArunPJohny - 基于分页的解决方案在这里无法正常工作,因为在某个操作上需要更改某些内容。名单可能不会那么长,但2分钟的时间来处理这个对象/数组是令人担忧的。 – kanika