我目前正在尝试使用我获取的dial_code
作为变量来检索相应的name
。
该应用程序使用世界地图。当用户在特定国家/地区上空悬停时,使用' getRegionName'获取该国家/地区。然后用它来改变变量name
。如何使用变量name
检索与其相关的dial_code
?
JSON
var dialCodes = [
{"name":"China","dial_code":"+86","code":"CN"},
{"name":"Afghanistan","dial_code":"+93","code":"AF"}
];
以下代码在国家/地区鼠标悬停时运行
var countryName = map.getRegionName(code);
label.html(name + ' (' + code.toString() + ')<br>' + dialCodes[0][countryName].dial_code);
此代码无法正常运行。 dialCodes[0][countryName].dial_code
是导致错误的部分,但我不确定如何正确引用相应的键/值对
答案 0 :(得分:4)
如果您必须支持旧浏览器: 遍历数组中的条目并与给定名称进行比较:
var dialCode;
for(var i = 0; i < dialCodes.length; i++) {
if(dialCodes[i].name === countryName) {
dialCode = dialCodes[i].dial_code;
break;
}
}
label.html(countryName + ' (' + dialCode + ')');
如果您浏览support
Array.prototype.filter
:
dialCodes.filter(function(e) { return e.name === 'China' })[0].dial_code
答案 1 :(得分:3)
如果您可以控制它,我建议您将对象更像字典,例如,如果您总是通过代码(CN
或AF
查找),则可以避免循环使用这样做了:
var dialCodes = {
CN: { "name":"China","dial_code":"+86","code":"CN" },
AF: {"name":"Afghanistan","dial_code":"+93","code":"AF"}
};
var code = dialCodes.CN.dial_code;
或者
var myCode = 'CN'; // for example
var code = dialCodes[myCode].dial_code;
答案 2 :(得分:0)
由于它是一个数组,您可以使用filter
来提取所需的数据。
function getData(type, val) {
return dialCodes.filter(function (el) {
return el[type] === val;
})[0];
}
getData('code', 'CN').dial_code; // +86