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 asked 2020-08-12T06:11:59Z
5个解决方案
101 votes

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

以下函数对数据进行过滤,返回回调返回<div id="output"></div>的数据,即其中data.code等于请求的国家/地区代码。

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

var found = getCountryByCode('DZ');

请参见下面的演示:

<div id="output"></div>
<div id="output"></div>

这是一个JSFiddle。

showdev answered 2020-08-12T06:12:34Z
58 votes
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 answered 2020-08-12T06:12:00Z
19 votes

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

dict = {}
json.forEach(function(x) {
    dict[x.code] = x.name
})

然后简单地

countryName = dict[countryCode]

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

georg answered 2020-08-12T06:13:03Z
9 votes

只需以功能性方式使用ES6 find()函数:

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

或Lodash _.find:

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

Penny Liu answered 2020-08-12T06:13:28Z
8 votes

使showdev回答更一般。

var getObjectByValue = function (array, key, value) {
    return array.filter(function (object) {
        return object[key] === value;
    });
};

例:

getObjectByValue(data, "code", "DZ" );
Osvaldo Cabrera answered 2020-08-12T06:13:52Z
translate from https://stackoverflow.com:/questions/19253753/javascript-find-json-value