2017-06-21 3 views
-1

Ich finde alle Arten von Beispielen, wie man ein Array sortiert, aber keiner von ihnen zeigt, wie man das Array danach verwendet.Sort Array und Loop Through Array

Ich verwende die Google-Entfernungsmatrix, um Entfernungsdaten für mehrere Ziele von einem Ursprung abzurufen. Ich ausgeben kann das Ziel Info nicht Problem:

$.each(response.rows[0].elements, function(x, y) { 

       var distance = response.rows[0].elements[x].distance; 
       var distance_value = distance.value; 
       var distance_text = distance.text; 
       var miles = distance_text.substring(0, distance_text.length -3); 
       var milesInt = parseInt(miles); 


       $('#result').append(destination + " - " + miles + "<br>"); 

       console.log(milesInt); 

      }); 

und ich die Zeichenfolge für Meilen in einen int umgewandelt, weil ich davon ausgegangen wäre einfacher zu sortieren, aber es ist in der Schleife.

hier ist ein Beispiel für die Daten von der api pro Ort zurückgegeben (es gibt 2 I und nachfolgend entfernt Adresse)

{ 
"rows": [ 
    { 
     "elements": [ 
      { 
       "distance": { 
        "text": "328 mi", 
        "value": 527479 
       }, 
       "duration": { 
        "text": "4 hours 48 mins", 
        "value": 17299 
       }, 
       "status": "OK" 
      }, 
      { 
       "distance": { 
        "text": "327 mi", 
        "value": 525717 
       }, 
       "duration": { 
        "text": "4 hours 54 mins", 
        "value": 17624 
       }, 
       "status": "OK" 
      } 
     ] 
    } 
], 
"originAddresses": [ 
    "Texas, USA" 
    ], 

] 
} 

Can I sort durch eine Variable innerhalb der Schleife?

+0

Ok, könntest du mir einen Link oder etwas geben, um deine Abstimmung abzusichern? Ich habe die letzten 12 Stunden auf Google verbracht, um das zu recherchieren und ich habe nichts hilfreiches gefunden. – JSum

+0

'var sortierte = rows.elements.sort ((a, b) => + a.distance.text.split ('') [0] - + b.distance.text.split ('') [0]) ; '. Teilen Sie den Abstandstext in das Leerzeichen, nehmen Sie das erste Element des resultierenden Arrays, konvertieren Sie ihn mit dem unären Operator '+' und bam in die Zahl. Nichts davon ist in irgendeiner Weise schwer zu befolgen, und die Struktur wird direkt aus den mdn-Dokumenten von 'Array.prototype.sort' und' String.prototype.split' entnommen. –

+0

[hier] (https://stackoverflow.com/questions/1129216/sort-array-of-objects-by-string-property-value-in-javascript) sind [einige] (https://stackoverflow.com/ Fragen/10003683/javascript-get-number-from-string) [verschieden] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) [links] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split) –

Antwort

-1
distances = rows[0].elements.map(function(item) { 
    return item.distance.value; 
} 
distances.sort() 
sorted_elements = []; 
rows[0].elements.forEach(function(item, key) { 
    sorted_elements[distances.indexOf(item.distance.value)] = item; 
}); 
rows[0].elements = sorted_elements; 
delete sorted_elements; 
delete distances; 

Zuerst erhalten Sie eine Reihe von sortierten Abständen, dann geben Sie den elemets-Schlüssel entsprechend dem Entfernungsschlüssel.

+0

Think OP versuchte, auf dem Meilenwert im distance.text Feld zu unterstützen. –

+0

Dies wird nach Entfernung sortiert, aber sortierte Array erinnert sich auch an Dauer. – azurinko

+0

Dadurch werden "Map" und "Filter" in einer verschachtelten und verschwenderischen Weise neu implementiert und * noch * nicht nach der richtigen Eigenschaft sortiert. –