我想以自定義的方式對數組進行排序。例子是一個學生的classlevel:如何將自定義排序應用於數組?
_.sortBy(["Junior","Senior","Freshman","Sophomore"], function(classlevel){
// ??
})
理想的情況下,排序應該返回:
["Freshman","Sophomore","Junior","Senior"]
我想我可以預先排名的classlevels提前時間是這樣的:
var classlevelRanked = [{ class: "Junior",
rank: 3
},{ class: "Senior",
rank: 4
},{ class: "Freshman",
rank: 1
},{ class: "Sophomore",
rank: 2
}]
然後通過以下方式應用排序:
_.sortBy(classlevelRanked, function(classlevel){
return classlevel.rank;
})
但後來我不得不這樣做,以帶出的隊伍:
.map(function(classlevel){
return classlevel["class"];
})
有沒有一種更直接的方式來做到這一點無需預先排名-的classlevels再剝離出來之後?
正是我要找的陣列。謝謝!! – Kevin
JS 101:把你的排名放在回調聲明之外,不需要每次重新定義「排名」...... – mpowered
@mpowered,我認爲這可能是一個不成熟的優化。瀏覽器應該能夠將其識別爲常量並編譯一次。你也可以編寫兩個函數:一個聲明排名並返回第二個排名的函數。將'rank'移到函數範圍外會污染全局範圍,因爲它只適用於該函數,所以最好在那裏。 – Jason