javascript - Iterate over array and filter results down to 10 -


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