我的javascript中包含一个json文件,它定义了一个如下所示的变量:
var places_json = {
"count": 13476,
"places": [
{"area": "London", "county": "STS", "lat": 52.300151820000004, "lon": -2.36665606, "code": "7567", "id": 1},
{"area": "Sheffield", "county": "STS", "lat": 51.33648680000003, "lon": 0.98861179000000001, "code": "9919", "id": 6},
{"area": "Huxton", "county": "STS", "lat": 53.27483902, "lon": -1.0146250700000001, "code": "9953", "id": 11},
]}
我想使用Javascript为area
为11的条目检索id
的值。
有谁知道怎么做?这对我来说太难了 - 我的Javascript并不是那么先进。如果我知道我需要的条目的数组索引,那么我可以这样做:
var entry = json_places.places[i]
但不幸的是,我不知道它只是id的值(这是唯一的)。
提前致谢。
答案 0 :(得分:3)
function findAreaById(placesArray, id) {
var place = null;
for (var i = 0, length = placesArray.length; i < length; i++) {
place = placesArray[i];
if (place.id === id) {
return place.area;
}
}
return null;
}
答案 1 :(得分:1)
只需遍历您的地点即可找到合适的项目。
var area = null;
for(var i = 0; i < json_places.places.length; i++) {
if(json_places.places[i].id == 11) {
area = json_places.places[i].area;
break;
}
}
alert(area);
如果您希望功能为您执行此操作,则可以运行以下命令:
json_places.get_place = function(id) {
return (function(id) {
for(var i = 0; i < this.places.length; i++) {
if(this.places[i].id == id) {
return this.places[i];
}
}
return null;
}).apply(json_places, id);
}
然后您可以简单地执行以下操作:
alert(json_places.get_place(11).area);
答案 2 :(得分:0)
function get_area(places_json, id) {
for (var i = 0; i < places_json.places.length; i++) {
if (places_json.places[i].id === id) {
return places_json.places[i].area;
}
}
}
另外,如果你知道你有可用的JavaScript 1.5(或者你不介意在https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter的代码中粘贴...),特别是如果你知道LINQ:
function get_area(places_json, id) {
return places_json.places.filter(function (place) { place.id === id; })[0].area;
}
答案 3 :(得分:0)
使用jQuery(即使这个问题得到了充分的回答):
var area = null;
$.each(places_json.places, function() {
if(this.id == 11) {
alert("Area is " + this.area);
area = this.area;
return false;
}
});
请参阅: