我有以下 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"}]}];
根据用户选择的国家/地区,我需要刷新所选国家/地区对象中各州的选择框选项。我知道我可以使用像这样的 int 索引索引到 country 集合中......
countryStateMap[0].States
不过,我需要一种通过 CountryCode 属性获取国家/地区的方法。我知道以下内容不起作用,但我想做的是这样的......
countryStateMap[CountryCode='CA'].States
这是否可以在不完全重建我的集合结构或每次迭代集合以找到我想要的集合的情况下实现?
更新: 我接受了 mVChr 的回答,因为它有效并且是最简单的解决方案,尽管它需要第二张 map 。
我们实际最终采用的解决方案只是使用国家/地区选择框的索引来索引到集合中。这是有效的,因为我们的国家/地区下拉列表也是从我们的数据结构中填充的。这是我们如何索引...
countryStateMap[$('#country').attr("selectedIndex")]
如果您需要以任何其他方式执行此操作,请使用以下任何解决方案。
最佳答案
您可以做的一件事是缓存 map ,这样您只需进行一次迭代:
var csmMap = {};
for (var i = 0, cl = countryStateMap.length; i < cl; i++) {
csmMap[countryStateMap[i].CountryCode] = i;
}
然后如果 countryCode = 'CA'
你可以找到它的状态:
countryStateMap[csmMap[countryCode]].States
关于javascript - jQuery/Javascript 通过对象属性索引到集合/映射中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5941899/