如何使用JavaScript变量提取JSON字符串

How do I extract JSON string using a JavaScript variable?

本文关键字:JSON 字符串 提取 变量 何使用 JavaScript      更新时间:2023-09-26

我当前正试图通过使用作为变量获得的name来检索相应的dial_code

该应用程序使用世界地图。当用户悬停在某个特定国家/地区时,会使用"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是导致错误的部分,但我不确定如何正确引用相应的键/值对

如果必须支持旧浏览器:循环数组中的条目,并与给定名称进行比较:

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

如果你可以控制它,我建议你把对象做得更像字典,例如,如果你总是按代码(CNAF)查找,如果你这样做,你可以避免循环:

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;

由于它是一个数组,因此可以使用filter提取所需的数据。

function getData(type, val) {
  return dialCodes.filter(function (el) {
    return el[type] === val;
  })[0];
}
getData('code', 'CN').dial_code; // +86