ich Ihre Hilfe für ein kleines algorithme für meine Anwendung benötigen:Unders sortBy Algorithmus
ich habe ein Objekt wie folgt:
var obj = { "response" : [
"candidate" : {
"id":"1",
"price" : 10,
"distance" : 20
},
"candidate" : {
"id":"2"
"price" : 14,
"distance" : 2
},
"candidate" : {
"id":"3",
"price" : 200,
"distance" : 1
}
] }
die ich sortiert nach Preis wie folgt aus:
var sortPrice = _(obj.response).sortBy(function(p){
return p.candidate.price
})
Es funktioniert gut und sortieren Sie das Objekt (IDs): 1,2,3
Jetzt, wenn Kandidat hat den gleichen Preis, aber anders Abstand soll ich die ersten Kandidaten mit dem gleichen Preis zeigen und die niedrigste Entfernung:
var obj = { "response" : [
"candidate" : {
"id":"1",
"price" : 10,
"distance" : 20
},
"candidate" : {
"id":"2"
"price" : 10,
"distance" : 2
},
"candidate" : {
"id":"3",
"price" : 200,
"distance" : 1
}
] }
var sorted = _(obj.response).chain().sortBy(function (p) {
return parseInt(p.candidate.price) ;
}).sortBy(function(d){
return parseInt(d.candidate.distance)
}).value();
Aber es mir die niedrigsten Entfernung sortiert zuerst (ids): 3 (mit Abstand 1), 2 (mit Abstand 2), 1 (mit Abstand 20) als 2,1,3
Haben Sie einen Vorschlag?
Vielen Dank.
Vielen Dank für die Antwort, ich Verwenden Sie lodash nicht für jetzt, aber Ihr Code ist interessant. –