首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript查找json值

Javascript查找json值
EN

Stack Overflow用户
提问于 2013-10-09 00:53:33
回答 4查看 307.4K关注 0票数 67

我需要在json国家列表中进行搜索。json类似于:

代码语言:javascript
复制
[ 
{"name": "Afghanistan", "code": "AF"}, 
{"name": "Åland Islands", "code": "AX"}, 
{"name": "Albania", "code": "AL"}, 
{"name": "Algeria", "code": "DZ"}
]

我只从数据库中获得代码,并将输出整个名称。因此,如果我得到"AL“,我想从json”阿尔巴尼亚“检索。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-09 00:57:06

代码语言:javascript
复制
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
  }
}
票数 82
EN

Stack Overflow用户

发布于 2013-10-09 01:09:59

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

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

代码语言:javascript
复制
function getCountryByCode(code) {
  return data.filter(
      function(data){ return data.code == code }
  );
}

var found = getCountryByCode('DZ');

请看下面的演示:

代码语言:javascript
复制
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;
代码语言:javascript
复制
<div id="output"></div>

Here's a JSFiddle

票数 131
EN

Stack Overflow用户

发布于 2013-10-09 00:54:55

首先将此结构转换为“字典”对象:

代码语言:javascript
复制
dict = {}
json.forEach(function(x) {
    dict[x.code] = x.name
})

然后简单地

代码语言:javascript
复制
countryName = dict[countryCode]

对于国家/地区列表,这并不重要,但对于较大的列表,此方法可确保即时查找,而简单的搜索将取决于列表大小。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19253753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档