I'm looking to use the API of Wikipedia to get places around my location.
So i tried : That request But i get result sort by pageID and not distance. How can i do in Javascript with the sort command?
Thank you for you help ;-) Alexis
答案 0 :(得分:0)
var data =[{
"batchcomplete": "",
"query": {
"pages": {
"1052923": {
"pageid": 1052923,
"ns": 0,
"title": "Stade du Pays de Charleroi",
"index": 0,
"coordinates": [
{
"lat": 50.4146503,
"lon": 4.4537527,
"primary": "",
"globe": "earth",
"dist": 683.4
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/Charleroi_Stade_du_Pays_de_Charleroi_1.jpg/500px-Charleroi_Stade_du_Pays_de_Charleroi_1.jpg",
"width": 500,
"height": 288
}
},
"1237678": {
"pageid": 1237678,
"ns": 0,
"title": "Chet (métro de Charleroi)",
"index": 1,
"coordinates": [
{
"lat": 50.410417,
"lon": 4.464397,
"primary": "",
"globe": "earth",
"dist": 750.8
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/4/42/MLC-chet.jpg",
"width": 500,
"height": 375
},
"terms": {
"description": [
"station du métro de Charleroi (Belgique)"
]
}
},
"1237691": {
"pageid": 1237691,
"ns": 0,
"title": "Neuville (métro de Charleroi)",
"index": 2,
"coordinates": [
{
"lat": 50.414637,
"lon": 4.458818,
"primary": "",
"globe": "earth",
"dist": 381.9
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/8/8f/MLC-neuville.jpg",
"width": 500,
"height": 375
},
"terms": {
"description": [
"station du métro de Charleroi (Belgique)"
]
}
},
"1241539": {
"pageid": 1241539,
"ns": 0,
"title": "Waterloo (métro de Charleroi)",
"index": 3,
"coordinates": [
{
"lat": 50.4175,
"lon": 4.45,
"primary": "",
"globe": "earth",
"dist": 895.2
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Waterloo_metro_station_%28Charleroi%29_-_01.jpg/500px-Waterloo_metro_station_%28Charleroi%29_-_01.jpg",
"width": 500,
"height": 331
},
"terms": {
"description": [
"station du métro de Charleroi (Belgique)"
]
}
},
"1264919": {
"pageid": 1264919,
"ns": 0,
"title": "Samaritaine (métro de Charleroi)",
"index": 4,
"coordinates": [
{
"lat": 50.42,
"lon": 4.461389,
"primary": "",
"globe": "earth",
"dist": 336.9
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Samaritaine_metro_station_%28Charleroi%29_-_01.jpg/500px-Samaritaine_metro_station_%28Charleroi%29_-_01.jpg",
"width": 500,
"height": 331
},
"terms": {
"description": [
"station du métro de Charleroi (Belgique)"
]
}
},
"1264973": {
"pageid": 1264973,
"ns": 0,
"title": "Gazomètre (métro de Charleroi)",
"index": 5,
"coordinates": [
{
"lat": 50.421944,
"lon": 4.473889,
"primary": "",
"globe": "earth",
"dist": 965
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Charleroi_OSM_map.svg/374px-Charleroi_OSM_map.svg.png",
"width": 374,
"height": 500
},
"terms": {
"description": [
"station du métro de Charleroi (Belgique)"
]
}
},
"1269274": {
"pageid": 1269274,
"ns": 0,
"title": "Janson (métro de Charleroi)",
"index": 6,
"coordinates": [
{
"lat": 50.413056,
"lon": 4.451944,
"primary": "",
"globe": "earth",
"dist": 878.3
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Janson_Metro_Station%2C_Charleroi_05.JPG/500px-Janson_Metro_Station%2C_Charleroi_05.JPG",
"width": 500,
"height": 281
},
"terms": {
"description": [
"station du métro de Charleroi (Belgique)"
]
}
},
"3924344": {
"pageid": 3924344,
"ns": 0,
"title": "Liste des rues de Charleroi",
"index": 7,
"coordinates": [
{
"lat": 50.417556,
"lon": 4.450976,
"primary": "",
"globe": "earth",
"dist": 826.5
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Map_Charleroi_in_Charleroi.svg/500px-Map_Charleroi_in_Charleroi.svg.png",
"width": 500,
"height": 492
},
"terms": {
"description": [
"page de liste de Wikipédia"
]
}
},
"5819249": {
"pageid": 5819249,
"ns": 0,
"title": "Tour Bleue",
"index": 8,
"coordinates": [
{
"lat": 50.412,
"lon": 4.45364,
"primary": "",
"globe": "earth",
"dist": 850.2
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Charleroi_-_Tour_bleue_-_2015-01-31.jpg/331px-Charleroi_-_Tour_bleue_-_2015-01-31.jpg",
"width": 331,
"height": 500
}
},
"6234241": {
"pageid": 6234241,
"ns": 0,
"title": "Square Jules Hiernaux",
"index": 9,
"coordinates": [
{
"lat": 50.417556,
"lon": 4.450976,
"primary": "",
"globe": "earth",
"dist": 826.5
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/Charleroi_-_Universit%C3%A9_du_Travail_-_Vigie.JPG/500px-Charleroi_-_Universit%C3%A9_du_Travail_-_Vigie.JPG",
"width": 500,
"height": 375
},
"terms": {
"description": [
"place de Charleroi, Belgique"
]
}
},
"6470845": {
"pageid": 6470845,
"ns": 0,
"title": "Maison des médecins",
"index": 10,
"coordinates": [
{
"lat": 50.415102,
"lon": 4.449836,
"primary": "",
"globe": "earth",
"dist": 931.7
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Charleroi_-_maison_des_m%C3%A9decins_-_02.jpg/289px-Charleroi_-_maison_des_m%C3%A9decins_-_02.jpg",
"width": 289,
"height": 500
},
"terms": {
"description": [
"maison Art nouveau à Charleroi"
]
}
},
"7696487": {
"pageid": 7696487,
"ns": 0,
"title": "Porte de Waterloo ou de la Belle Alliance de Charleroi",
"index": 11,
"coordinates": [
{
"lat": 50.422794,
"lon": 4.466356,
"primary": "",
"globe": "earth",
"dist": 689.1
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Montignies-sur-Sambre_-_Porte_de_Waterloo.jpg/375px-Montignies-sur-Sambre_-_Porte_de_Waterloo.jpg",
"width": 375,
"height": 500
}
},
"8848501": {
"pageid": 8848501,
"ns": 0,
"title": "Caserne Defeld",
"index": 12,
"coordinates": [
{
"lat": 50.412008,
"lon": 4.453642,
"primary": "",
"globe": "earth",
"dist": 849.5
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Charleroi_-_Bd_Mayence_-_Caserne_Defeld_-_portail.jpg/500px-Charleroi_-_Bd_Mayence_-_Caserne_Defeld_-_portail.jpg",
"width": 500,
"height": 375
},
"terms": {
"description": [
"ancienne caserne de la gendarmerie à Charleroi"
]
}
},
"10059120": {
"pageid": 10059120,
"ns": 0,
"title": "Maternité reine Astrid",
"index": 13,
"coordinates": [
{
"lat": 50.415,
"lon": 4.45194444,
"primary": "",
"globe": "earth",
"dist": 790.6
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Charleroi_-_Porte_de_Waterloo_et_Bd_Dewandre_en_1937.jpg/500px-Charleroi_-_Porte_de_Waterloo_et_Bd_Dewandre_en_1937.jpg",
"width": 500,
"height": 242
},
"terms": {
"description": [
"ancien hôpital de Charleroi"
]
}
},
"10190333": {
"pageid": 10190333,
"ns": 0,
"title": "Attentat du 6 août 2016 à Charleroi",
"index": 14,
"coordinates": [
{
"lat": 50.412,
"lon": 4.45364,
"primary": "",
"globe": "earth",
"dist": 850.2
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Charleroi_-_Tour_bleue_-_2015-01-31.jpg/331px-Charleroi_-_Tour_bleue_-_2015-01-31.jpg",
"width": 331,
"height": 500
}
},
"10469222": {
"pageid": 10469222,
"ns": 0,
"title": "Échangeur de Charleroi-Nord",
"index": 15,
"coordinates": [
{
"lat": 50.4176,
"lon": 4.4561,
"primary": "",
"globe": "earth",
"dist": 465.4
}
],
"thumbnail": {
"source": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/13/Charleroi_-_R9_-_portes_de_Waterloo_et_de_Fleurus.jpg/500px-Charleroi_-_R9_-_portes_de_Waterloo_et_de_Fleurus.jpg",
"width": 500,
"height": 375
},
"terms": {
"description": [
"échangeur autoroutier belge"
]
}
}
}
}
}];
//alert(data);
//console.table(data);
function sortByKey(jsObj){
var sortedArray = [];
// Push each JSON Object entry in array by [key, value]
for(var i in jsObj)
{
sortedArray.push([i, jsObj[i]]);
}
// Run native sort function and returns sorted array.
return sortedArray.sort();
}
var sortedbyKeyJSONArray = '';
$.each(data, function (i, item) {
sortedbyKeyJSONArray = sortByKey(item.query.pages);
sortByKey(item.query.pages);
// console.table(item.query.pages);
//console.table(sortedbyKeyJSONArray);
});
console.table(sortedbyKeyJSONArray);
//var sortedbyKeyJSONArray = sortByKey(data.query.pages.coordinates.dist);
//console.table(data);
/*data.sort(function (a, b) {
return a.name.localeCompare(b.name);
});*/
//document.write('<pre>' + JSON.stringify(data, 0, 4) + '</pre>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 1 :(得分:0)
var data={"batchcomplete":"","query":{"pages":{"1052923":{"pageid":1052923,"ns":0,"title":"Stade du Pays de Charleroi","index":0,"coordinates":[{"lat":50.4146503,"lon":4.4537527,"primary":"","globe":"earth","dist":683.4}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/Charleroi_Stade_du_Pays_de_Charleroi_1.jpg/500px-Charleroi_Stade_du_Pays_de_Charleroi_1.jpg","width":500,"height":288}},"1237678":{"pageid":1237678,"ns":0,"title":"Chet (m\u00e9tro de Charleroi)","index":1,"coordinates":[{"lat":50.410417,"lon":4.464397,"primary":"","globe":"earth","dist":750.8}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/4/42/MLC-chet.jpg","width":500,"height":375},"terms":{"description":["station du m\u00e9tro de Charleroi (Belgique)"]}},"1237691":{"pageid":1237691,"ns":0,"title":"Neuville (m\u00e9tro de Charleroi)","index":2,"coordinates":[{"lat":50.414637,"lon":4.458818,"primary":"","globe":"earth","dist":381.9}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/8/8f/MLC-neuville.jpg","width":500,"height":375},"terms":{"description":["station du m\u00e9tro de Charleroi (Belgique)"]}},"1241539":{"pageid":1241539,"ns":0,"title":"Waterloo (m\u00e9tro de Charleroi)","index":3,"coordinates":[{"lat":50.4175,"lon":4.45,"primary":"","globe":"earth","dist":895.2}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/2/29/Waterloo_metro_station_%28Charleroi%29_-_01.jpg/500px-Waterloo_metro_station_%28Charleroi%29_-_01.jpg","width":500,"height":331},"terms":{"description":["station du m\u00e9tro de Charleroi (Belgique)"]}},"1264919":{"pageid":1264919,"ns":0,"title":"Samaritaine (m\u00e9tro de Charleroi)","index":4,"coordinates":[{"lat":50.42,"lon":4.461389,"primary":"","globe":"earth","dist":336.9}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Samaritaine_metro_station_%28Charleroi%29_-_01.jpg/500px-Samaritaine_metro_station_%28Charleroi%29_-_01.jpg","width":500,"height":331},"terms":{"description":["station du m\u00e9tro de Charleroi (Belgique)"]}},"1264973":{"pageid":1264973,"ns":0,"title":"Gazom\u00e8tre (m\u00e9tro de Charleroi)","index":5,"coordinates":[{"lat":50.421944,"lon":4.473889,"primary":"","globe":"earth","dist":965}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Charleroi_OSM_map.svg/374px-Charleroi_OSM_map.svg.png","width":374,"height":500},"terms":{"description":["station du m\u00e9tro de Charleroi (Belgique)"]}},"1269274":{"pageid":1269274,"ns":0,"title":"Janson (m\u00e9tro de Charleroi)","index":6,"coordinates":[{"lat":50.413056,"lon":4.451944,"primary":"","globe":"earth","dist":878.3}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Janson_Metro_Station%2C_Charleroi_05.JPG/500px-Janson_Metro_Station%2C_Charleroi_05.JPG","width":500,"height":281},"terms":{"description":["station du m\u00e9tro de Charleroi (Belgique)"]}},"3924344":{"pageid":3924344,"ns":0,"title":"Liste des rues de Charleroi","index":7,"coordinates":[{"lat":50.417556,"lon":4.450976,"primary":"","globe":"earth","dist":826.5}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Map_Charleroi_in_Charleroi.svg/500px-Map_Charleroi_in_Charleroi.svg.png","width":500,"height":492},"terms":{"description":["page de liste de Wikip\u00e9dia"]}},"5819249":{"pageid":5819249,"ns":0,"title":"Tour Bleue","index":8,"coordinates":[{"lat":50.412,"lon":4.45364,"primary":"","globe":"earth","dist":850.2}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Charleroi_-_Tour_bleue_-_2015-01-31.jpg/331px-Charleroi_-_Tour_bleue_-_2015-01-31.jpg","width":331,"height":500}},"6234241":{"pageid":6234241,"ns":0,"title":"Square Jules Hiernaux","index":9,"coordinates":[{"lat":50.417556,"lon":4.450976,"primary":"","globe":"earth","dist":826.5}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/Charleroi_-_Universit%C3%A9_du_Travail_-_Vigie.JPG/500px-Charleroi_-_Universit%C3%A9_du_Travail_-_Vigie.JPG","width":500,"height":375},"terms":{"description":["place de Charleroi, Belgique"]}},"6470845":{"pageid":6470845,"ns":0,"title":"Maison des m\u00e9decins","index":10,"coordinates":[{"lat":50.415102,"lon":4.449836,"primary":"","globe":"earth","dist":931.7}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Charleroi_-_maison_des_m%C3%A9decins_-_02.jpg/289px-Charleroi_-_maison_des_m%C3%A9decins_-_02.jpg","width":289,"height":500},"terms":{"description":["maison Art nouveau \u00e0 Charleroi"]}},"7696487":{"pageid":7696487,"ns":0,"title":"Porte de Waterloo ou de la Belle Alliance de Charleroi","index":11,"coordinates":[{"lat":50.422794,"lon":4.466356,"primary":"","globe":"earth","dist":689.1}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Montignies-sur-Sambre_-_Porte_de_Waterloo.jpg/375px-Montignies-sur-Sambre_-_Porte_de_Waterloo.jpg","width":375,"height":500}},"8848501":{"pageid":8848501,"ns":0,"title":"Caserne Defeld","index":12,"coordinates":[{"lat":50.412008,"lon":4.453642,"primary":"","globe":"earth","dist":849.5}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Charleroi_-_Bd_Mayence_-_Caserne_Defeld_-_portail.jpg/500px-Charleroi_-_Bd_Mayence_-_Caserne_Defeld_-_portail.jpg","width":500,"height":375},"terms":{"description":["ancienne caserne de la gendarmerie \u00e0 Charleroi"]}},"10059120":{"pageid":10059120,"ns":0,"title":"Maternit\u00e9 reine Astrid","index":13,"coordinates":[{"lat":50.415,"lon":4.45194444,"primary":"","globe":"earth","dist":790.6}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Charleroi_-_Porte_de_Waterloo_et_Bd_Dewandre_en_1937.jpg/500px-Charleroi_-_Porte_de_Waterloo_et_Bd_Dewandre_en_1937.jpg","width":500,"height":242},"terms":{"description":["ancien h\u00f4pital de Charleroi"]}},"10190333":{"pageid":10190333,"ns":0,"title":"Attentat du 6 ao\u00fbt 2016 \u00e0 Charleroi","index":14,"coordinates":[{"lat":50.412,"lon":4.45364,"primary":"","globe":"earth","dist":850.2}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Charleroi_-_Tour_bleue_-_2015-01-31.jpg/331px-Charleroi_-_Tour_bleue_-_2015-01-31.jpg","width":331,"height":500}},"10469222":{"pageid":10469222,"ns":0,"title":"\u00c9changeur de Charleroi-Nord","index":15,"coordinates":[{"lat":50.4176,"lon":4.4561,"primary":"","globe":"earth","dist":465.4}],"thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/1/13/Charleroi_-_R9_-_portes_de_Waterloo_et_de_Fleurus.jpg/500px-Charleroi_-_R9_-_portes_de_Waterloo_et_de_Fleurus.jpg","width":500,"height":375},"terms":{"description":["\u00e9changeur autoroutier belge"]}}}}
};
var pagesKeys=Object.keys(data.query.pages);
var pagesArray=pagesKeys.map(function(d){
return data.query.pages[d];
});
pagesArray=pagesArray.sort(function(a,b){
return a.coordinates[0].dist - b.coordinates[0].dist;
});
console.log("Sorted Data based on Distance:"+pagesArray);