Jes*_*ebb 3 javascript jquery json map
我有以下Javascript定义一组国家及其状态......
var countryStateMap = [{"CountryCode":"CA","Name":"Canada","States":[{"StateCode":"S!","CountryCode":"CA","Name":"State 1"},{"StateCode":"S2","CountryCode":"CA","Name":"State 2"}]},"CountryCode":"US","Name":"United States","States":[{"StateCode":"S1","CountryCode":"US","Name":"State 1"}]}];
Run Code Online (Sandbox Code Playgroud)
根据用户选择的国家/地区,我需要从所选的Country对象刷新选择框的状态选项.我知道我可以使用像这样的int索引索引到国家集合中...
countryStateMap[0].States
Run Code Online (Sandbox Code Playgroud)
我需要一种方法来通过CountryCode属性获取Country.我知道以下不起作用,但我想做的是这样的......
countryStateMap[CountryCode='CA'].States
Run Code Online (Sandbox Code Playgroud)
这可以在没有完全重建我的集合结构的情况下实现,或者每次迭代集合以找到我想要的那个吗?
更新:我接受了mVChr的答案,因为它有效并且是最简单的解决方案,即使它需要第二张地图.
我们实际上最终得到的解决方案就是使用国家选择框的索引来索引集合.这是有效的,因为我们的国家下拉列表也来自我们的数据结构.以下是我们索引的方式......
countryStateMap[$('#country').attr("selectedIndex")]
Run Code Online (Sandbox Code Playgroud)
如果您需要以任何其他方式执行此操作,请使用以下任何解决方案.
你可以做的一件事就是缓存一个地图,这样你只需要进行一次迭代:
var csmMap = {};
for (var i = 0, cl = countryStateMap.length; i < cl; i++) {
csmMap[countryStateMap[i].CountryCode] = i;
}
Run Code Online (Sandbox Code Playgroud)
然后,如果countryCode = 'CA'
你能找到它的状态,如:
countryStateMap[csmMap[countryCode]].States
Run Code Online (Sandbox Code Playgroud)