javascript - jQuery/Javascript 通过对象属性索引到集合/映射中?

标签 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"}]}];

根据用户选择的国家/地区,我需要刷新所选国家/地区对象中各州的选择框选项。我知道我可以使用像这样的 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/

相关文章:

javascript - 创建具有动态宽度的不均匀列

javascript - 如何使用 JavaScript 测量动画发生的时间

json - Playframework Scala Specs2 JSON 匹配器

javascript - 正则表达式模式错误

javascript - Node.js - 如何创建可以访问根路径 "/'之前的url的请求

javascript - KnockoutJS - 不能将 "Slice"与 ko.computed 对象一起使用

javascript - jQuery : Find text after a string of specific tags and remove img tags if no images

Javascript 对象 - 无法访问包含 '-' 的 key

javascript - Jquery 可调整大小仅适用于最近(最后)动态创建的 div

javascript - Alexa NodeJS 在语音输出上失败,没有特定错误