最近實現一個需求,在前端對文件夾和文件列表按文件名,時間等進行排序。前端
需求是先顯示文件夾,再顯示文件。chrome
一開始我實現的方式:code
大概思路就是:排序
先按文件名或者時間進行排序,而後在按文件夾、文件進行排序。get
大體代碼以下:string
//根據給定的字段進行排序 $trList.sort ( function compareFunction(param1, param2) { var p1_name = param1.getAttribute(attr_name); var p2_name = param2.getAttribute(attr_name); var compare_result =0; if(dataType=='string'){ compare_result = p1_name.localeCompare(p2_name,"zh-CN"); }else if(dataType=='num'){ compare_result = p1_name-p2_name; } //正逆序 if(isAsc){ return compare_result; }else { return 0-compare_result; } }); //對文件夾、文件進行分組排序 $trList.sort ( function compareFunction(param1, param2) { var p1_name = param1.getAttribute('data-type'); var p2_name = param2.getAttribute('data-type'); return p1_name.localeCompare(p2_name,"zh-CN"); });
我本身用的是chrome77.0.3865.75 64位的,排序正常。io
不過發如今chrome 63.0.3239.132下,排序不正常。function
排查問題,具體就是在第二步對文件夾、文件進行分組排序的時候,63版本的chrome會把上一步排序的打亂。這個問題在77版本的chrome下,就沒有。List
解決方案:sort
先把文件夾和文件分紅兩個列表,而後分別對這兩個列表進行排序,而後再組合在一塊兒。