我有这个 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>');
}
});
现在,当这个城市列表增长到 5 万条记录 (2 MB) 时,一个州有 5 万个城市(性能测试),上面的代码需要 2 分钟才能在本地运行代码的 Windows 7 机器上加载城市列表下拉列表。尝试使用 native for
/ in
-loop 但没有得到令人满意的结果。
关于如何减少时间的任何想法?我需要更改 JS 对象结构吗?