i'm using google maps distance matrix api search distances between 1 city , lot of other cities, returns array
looks following:
var array = [{ "distance": { "text": "1,031 km", "value": 1030580 }, "duration": { "text": "9 hours 47 mins", "value": 35216 }, "status": "ok", "location": "akron oh " }, { "distance": { "text": "3,589 km", "value": 3589092 }, "duration": { "text": "1 day 8 hours", "value": 116601 }, "status": "ok", "location": "albuquerque " }, { "distance": { "text": "1,722 km", "value": 1721588 }, "duration": { "text": "16 hours 31 mins", "value": 59462 }, "status": "ok", "location": "alpharetta " }, { "status": "zero_results", "location": "amsterdam " }, { "distance": { "text": "1,465 km", "value": 1465478 }, "duration": { "text": "13 hours 47 mins", "value": 49600 }, "status": "ok", "location": "asheville " }, { "distance": { "text": "1,745 km", "value": 1744913 }, "duration": { "text": "16 hours 30 mins", "value": 59408 }, "status": "ok", "location": "atlanta ga " }, { "distance": { "text": "3,161 km", "value": 3161495 }, "duration": { "text": "1 day 5 hours", "value": 103799 }, "status": "ok", "location": "austin tx " }, { "status": "zero_results", "location": "bali " }, { "distance": { "text": "645 km", "value": 645287 }, "duration": { "text": "6 hours 31 mins", "value": 23432 }, "status": "ok", "location": "baltimore " }, { "status": "zero_results", "location": "bangalore india " }, { "status": "zero_results", "location": "barcelona spain " }, { "status": "zero_results", "location": "berlin " }, { "status": "zero_results", "location": "bogota colombia " }, { "distance": { "text": "1 m", "value": 0 }, "duration": { "text": "1 min", "value": 0 }, "status": "ok", "location": "boston " }, { "distance": { "text": "3,195 km", "value": 3194920 }, "duration": { "text": "1 day 5 hours", "value": 103332 }, "status": "ok", "location": "boulder " }, { "status": "zero_results", "location": "brisbane " }, { "distance": { "text": "347 km", "value": 346944 }, "duration": { "text": "3 hours 47 mins", "value": 13627 }, "status": "ok", "location": "brooklyn ny " }, { "status": "zero_results", "location": "brussels " }, { "status": "zero_results", "location": "bucharest romania " }, { "distance": { "text": "4,161 km", "value": 4160897 }, "duration": { "text": "1 day 15 hours", "value": 138992 }, "status": "ok", "location": "calgary " }, { "status": "zero_results", "location": "canaray islands " }, { "distance": { "text": "4,098 km", "value": 4097538 }, "duration": { "text": "1 day 13 hours", "value": 131955 }, "status": "ok", "location": "cedar city " }, { "distance": { "text": "1,572 km", "value": 1571535 }, "duration": { "text": "14 hours 46 mins", "value": 53157 }, "status": "ok", "location": "charleston sc " }, { "distance": { "text": "1,360 km", "value": 1359772 }, "duration": { "text": "13 hours 2 mins", "value": 46920 }, "status": "ok", "location": "charlotte nc " }, { "distance": { "text": "1,581 km", "value": 1581073 }, "duration": { "text": "14 hours 42 mins", "value": 52919 }, "status": "ok", "location": "chicago il " }, { "status": "zero_results", "location": "chile " }, { "distance": { "text": "1,030 km", "value": 1029774 }, "duration": { "text": "9 hours 33 mins", "value": 34376 }, "status": "ok", "location": "cleveland " }, { "status": "zero_results", "location": "cluj " }, { "status": "zero_results", "location": "columbia " }, { "distance": { "text": "6,888 km", "value": 6887507 }, "duration": { "text": "3 days 8 hours", "value": 286994 }, "status": "ok", "location": "costa rica " }, { "status": "zero_results", "location": "crawley uk " }, { "distance": { "text": "2,847 km", "value": 2847374 }, "duration": { "text": "1 day 2 hours", "value": 93594 }, "status": "ok", "location": "dallas tx " }, { "distance": { "text": "3,173 km", "value": 3172885 }, "duration": { "text": "1 day 5 hours", "value": 102621 }, "status": "ok", "location": "denver co " }, { "distance": { "text": "1,138 km", "value": 1137531 }, "duration": { "text": "10 hours 46 mins", "value": 38759 }, "status": "ok", "location": "detroit " }, { "status": "zero_results", "location": "durham england " }, { "status": "zero_results", "location": "ecuador " }, { "distance": { "text": "3,137 km", "value": 3137025 }, "duration": { "text": "1 day 5 hours", "value": 102899 }, "status": "ok", "location": "fort collins " }, { "distance": { "text": "2,378 km", "value": 2377758 }, "duration": { "text": "21 hours 35 mins", "value": 77712 }, "status": "ok", "location": "fort lauderdale " }, { "distance": { "text": "1,515 km", "value": 1514824 }, "duration": { "text": "14 hours 24 mins", "value": 51846 }, "status": "ok", "location": "greenville " }, { "status": "zero_results", "location": "hamptons " }, { "status": "zero_results", "location": "hongkong " }, { "status": "zero_results", "location": "honolulu hi " }, { "distance": { "text": "2,974 km", "value": 2973919 }, "duration": { "text": "1 day 3 hours", "value": 97180 }, "status": "ok", "location": "houston tx " }, { "status": "zero_results", "location": "hybrid " }, { "status": "zero_results", "location": "hyderabad india " }]
i need iterate on array
, return array
containing ten of these results have lowest number of distance. you'll notice of results "status":"zero_results"
, need avoid those.
so far, thinking along these lines:
var arrayoften = []; $.each(array,function(index,location){ })
on way to
- filter out unwanted entries
- sort array distance
- get first 10 elements
var result = array .filter(function(city) { return city.status === "ok"; }) .sort(function(a, b) { return a.distance.value - b.distance.value; }) .slice(0, 10);
or arrow functions (thank es2015):
var result = array .filter(city => city.status === 'ok') .sort((a, b) => a.distance.value - b.distance.value) .slice(0, 10);
Comments
Post a Comment