2017-03-06 6 views
0

Was ist der effektivste Weg, ein Array basierend auf einem Wert zu sortieren. Ich habe variable user_location_lat und user_location_long togheter mit dem Array store_locations.Sortieren eines Arrays basierend auf dem Wert

Meine variable Benutzerstandort hat (zum Beispiel) diesen Wert: lat 45,222123123/long 54,5589858 das Array wie folgt aussehen:

id: 4, lat: 43.22243243, longi: 52,342234 
id: 5, lat: 45.22243243, longi: 65,432432 
id: 8, lat: 77.22243243, longi: 77,555324 

etc. 

Ich weiß, wie ich ein Array auf die Werte innerhalb des Arrays basierend sortieren. Aber nicht, wie ich sie basierend auf einem Wert außerhalb des Arrays sortieren kann.

Wie kann ich den nächsten Wert aus dem Array von user_location finden?

EDIT: Und ist es möglich, den nächsten Ort auf der Grundlage von Lat und Long zu bekommen? Siehe meine Bearbeitung oben.

+0

Sie benötigen zur ersten Schleife durch das Array von Objekten und den Abstand zu dem 'user_location' berechnen und sie als eine Eigenschaft des Objekts hinzuzufügen. Dann 'sort()' das Array nach dieser Eigenschaft –

+0

Wie speichern Sie die ID in Bezug auf den Wert in Ihrem Array? –

Antwort

1

var latArray = [43.22243243, 45.22243243, 77.22243243] 
 
var myLat = 45.222123123; 
 

 
var closest = latArray.reduce(function (prev, curr) { 
 
    return (Math.abs(curr - myLat) < Math.abs(prev - myLat) ? curr : prev); 
 
}); 
 

 
console.log(closest);

Quelle: get closest number out of array

+0

Danke, aber ich habe einen Fehler in meinem Code gemacht. Ich muss am nächsten Lat und lang (siehe meine Post), ist das möglich? Ich dachte Lat wäre nur genug in dieser Situation .. aber es ist nicht, Entschuldigung! – Appel

+1

vielleicht überprüfen Sie dies: http://StackOverflow.com/Questions/17594401/Find-Closet-City-To-Given-Longitude-Latitude – Brad

+0

Danke, es funktioniert jetzt! – Appel

Verwandte Themen