我試圖數組排序,看起來像這樣:排序 - 移動數字和特殊字符到最後
var arr = ["a", "c", "1", "e", "-", "4", "p", "$", "~", "6", "33", "h"];
我想應該是順序:
var arr = ["a", "c", "e", "h", "p", "-", "~", "$", "1", "33", "4", "6"];
我已經有一個工作解決方案,但我不確定這是如何做到最好(最快)的方式。
arr.sort(function(a, b) {
return a.localeCompare(b);
});
for (var i = 0; i < arrLength; i++) {
if (arr[i].localeCompare("a") >= 0) {
if (i > 0) {
Array.prototype.push.apply(arr, arr.splice(0, i));
}
break;
}
}
我認爲這個問題最適合代碼審查http://codereview.stackexchange.com/ – laaposto
嘗試jsperf.com基準 – DhruvPathak
你只需要一個'sort'回調函數返回'-1','0'或' 1'取決於'a'是否應該在'b'之前,等於或之後排序。你只需要更新你的比較邏輯來考慮你的具體規則... – deceze