JavaScript 查找 json 值

新手上路,请多包涵

我需要在国家/地区的 json 列表中进行搜索。 json就像:

[
{"name": "Afghanistan", "code": "AF"},
{"name": "Åland Islands", "code": "AX"},
{"name": "Albania", "code": "AL"},
{"name": "Algeria", "code": "DZ"}
]

我只从数据库中获取代码并输出整个名称。因此,如果我得到“AL”,我想从 json“Albania”中检索

原文由 Tropicalista 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答
var obj = [
 {"name": "Afghanistan", "code": "AF"},
 {"name": "Åland Islands", "code": "AX"},
 {"name": "Albania", "code": "AL"},
 {"name": "Algeria", "code": "DZ"}
 ];

 // the code you're looking for
 var needle = 'AL';

 // iterate over each element in the array
 for (var i = 0; i < obj.length; i++){
 // look for the entry with a matching `code` value
 if (obj[i].code == needle){
 // we found it
 // obj[i].name is the matched result
 }
 }

原文由 Brad Christie 发布,翻译遵循 CC BY-SA 3.0 许可协议

我建议使用 JavaScript 的 Array 方法 filter() 来按值识别元素。它通过使用“函数来测试数组的每个元素。返回 true 以保留元素,否则返回 false 来过滤数据。”

以下函数过滤数据,返回回调返回的数据 true ,即 data.code 等于请求的国家代码。

 function getCountryByCode(code) {
  return data.filter(
      function(data){ return data.code == code }
  );
}

var found = getCountryByCode('DZ');

请看下面的演示:

 var data = [{
  "name": "Afghanistan",
  "code": "AF"
}, {
  "name": "Åland Islands",
  "code": "AX"
}, {
  "name": "Albania",
  "code": "AL"
}, {
  "name": "Algeria",
  "code": "DZ"
}];

function getCountryByCode(code) {
  return data.filter(
    function(data) {
      return data.code == code
    }
  );
}

var found = getCountryByCode('DZ');

document.getElementById('output').innerHTML = found[0].name;
 <div id="output"></div>

这是一个 JSFiddle

原文由 showdev 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏