JavaScript find json value
JavaScript find json value
我需要在 json 国家/地区列表中搜索。json 就像:
[
{"name": "Afghanistan", "code": "AF"},
{"name": "Åland Islands", "code": "AX"},
{"name": "Albania", "code": "AL"},
{"name": "Algeria", "code": "DZ"}
]
我只从数据库中获取代码,并输出整个名称。因此,如果我得到"AL",我想从json"Albania"
我建议使用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。
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
}
}
只需以功能性方式使用 ES6 find()
函数:
var data=[{name:"Afghanistan",code:"AF"},{name:"Åland Islands",code:"AX"},{name:"Albania",code:"AL"},{name:"Algeria",code:"DZ"}];
let country = data.find(el => el.code === "AL");
// => {name: "Albania", code: "AL"}
console.log(country["name"]);
或 Lodash _.find:
var data=[{name:"Afghanistan",code:"AF"},{name:"Åland Islands",code:"AX"},{name:"Albania",code:"AL"},{name:"Algeria",code:"DZ"}];
let country = _.find(data, ["code", "AL"]);
// => {name: "Albania", code: "AL"}
console.log(country["name"]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
首先将此结构转换为"字典"对象:
dict = {}
json.forEach(function(x) {
dict[x.code] = x.name
})
然后简单地
countryName = dict[countryCode]
对于国家/地区列表,这并不重要,但对于较大的列表,此方法可确保即时查找,而天真的搜索将取决于列表大小。
使@showdev答案更笼统。
var getObjectByValue = function (array, key, value) {
return array.filter(function (object) {
return object[key] === value;
});
};
例:
getObjectByValue(data, "code", "DZ" );
相关文章:
- Ajax Javascript Get JSON value
- 有些人有任何关于如何使用Modified Java Script Value处理返回Json(url)的示例
- AJAX POST JSON value
- JavaScript find json value
- 如何将 AJAX JSON 映射到 Label & Value
- 循环遍历嵌套的json对象并显示kay/value对
- JSON multi-value
- 解析JSON数组并提取选择列表ID和Value的值
- 使用javascript从JSON中获取2个不同的数组,数组中的top 4 Key和Value与top值一致
- 使用json设置tag's value属性不工作
- Fetching the JSON value
- 提交时,JSON数据返回:"Cannot read property 'value'undef
- 将具有key=value对的字符串解析为JSON
- 使用value从JSON对象中获取数据
- options single use value from json - Knockout JS
- 创建类似key和value的json
- 将JSON编码的feed value's image src协议http:替换为https:
- 检查JSON对象中value是否不存在
- 如何在不使用“标签”的情况下制作NVD3饼状图?和“;value"JSON对象中
- 在Javascript中将变量传递给JSON-value-request