最近開發中遇到一個排序的問題,比如前端需要對下列數據進行排序:
"第1學期"、"第2學期"、"第3學期"、"第4學期"、"第5學期"、"第6學期"、"第7學期"、"第8學期"
說實話,一直覺得像排序這種數據處理,應該後端實現,可是由於這塊邏輯太複雜了,後端代碼已經很複雜了,在這種前後端都可以做的情況下,想想,還是前端來實現吧。
最初的思路是使用switch來實現,對應的case是 "第X學期",用新的數據push進去。後來,因爲種種原因,前端又不需要排序 了。這兩天準備重溫下JS基礎,看到sort函數時,突然想,好像這樣也可以哎
function mySort(data: any[]) {
if (Array.isArray(data)) {
data.sort((a: any, b: any) => {
return a.termName.slice(1, 2) - b.termName.slice(1, 2);
});
}
}
算不上“發現新大陸”,但對自己而言,對於開發中的排序又有了新的解決思路,記錄下,說不定哪天就忘記了。
此處是因爲被排序字段中含有數字,要是沒有數字怎麼辦?比如按照成績等級:優秀、良好及格、不及格排序
const { content = [], order = [] } = data;
const finalContent: any[] = [];
if (order && order.length > 0) {
for (let i = 0; i < order.length; i += 1) {
if (content && content.length > 0) {
for (let j = 0; j < content.length; j += 1) {
if (order[i].rankName === content[j].rankName) {
finalContent.push(content[j]);
}
}
}
}
}
思路:
step1:讓後端給兩個字段:content-真實的數據也是需要處理的數據,order-需要排序的順序
step2:依次對比,按照order中的順序push