Mi piacerebbe ordinare una matrice in modo personalizzato. Esempio sarebbe classlevel di uno studente:come si applica un ordinamento personalizzato a un array?
_.sortBy(["Junior","Senior","Freshman","Sophomore"], function(classlevel){
// ??
})
Idealmente, il tipo dovrebbe restituire:
["Freshman","Sophomore","Junior","Senior"]
Sto pensando che potrei pre-rank i classlevels prima del tempo come questo:
var classlevelRanked = [{ class: "Junior",
rank: 3
},{ class: "Senior",
rank: 4
},{ class: "Freshman",
rank: 1
},{ class: "Sophomore",
rank: 2
}]
e quindi applicare un ordinamento tramite:
_.sortBy(classlevelRanked, function(classlevel){
return classlevel.rank;
})
Ma poi devo mettere a nudo fuori i ranghi facendo:
.map(function(classlevel){
return classlevel["class"];
})
C'è un modo più diretto per farlo senza pre-classifica i classlevels e poi nudo fuori dopo?
esattamente quello che sto cercando. Grazie!! – Kevin
JS 101: metti i tuoi ranghi al di fuori dell'istruzione callback, non c'è bisogno di ridefinire 'rank' ogni volta ... – mpowered
@motorizzato, penso che possa essere un'ottica prematura. I browser dovrebbero essere in grado di riconoscerlo come costante e compilarlo una volta. Puoi anche scrivere due funzioni: una che dichiara il rango e restituisce una seconda funzione che fa la classifica. Lo spostamento di 'rank' al di fuori dell'ambito della funzione inquina l'ambito globale, e poiché si applica solo a quella funzione, è meglio averlo lì. – Jason