按十进制排序数组,然后按字符串排序 - Javascript

Edi*_*ruz 3 javascript arrays sorting string

我需要使用普通的旧Javascript对这种格式的数组进行排序.

var arr = ["0.01 BASIC", "0.01 SEF", "0.015 BASIC"];
Run Code Online (Sandbox Code Playgroud)

我需要的是,数组首先按十进制排序,然后按字符串排序,并产生如下所示的输出;

arr = ["0.01 BASIC", "0.015 BASIC", "0.01 SEF"];
Run Code Online (Sandbox Code Playgroud)

我不能在执行排序时使用jquery.只是简单的旧Javascript.

Den*_*ret 6

你可以这样做 :

arr.sort(function(a,b){
   var at = a.split(' '), bt = b.split(' ');
   if (at[1]!=bt[1]) return at[1]>bt[1] ? 1 : -1;
   return parseFloat(at[0])-parseFloat(bt[0]);
});
Run Code Online (Sandbox Code Playgroud)

如果要对非常大的数组进行排序,则缓存密钥可能会更快.但它对大多数阵列来说可能无关紧要.

示例:

["0.01 BASIC", "0.01 SEF", "0.015 BASIC", "0.2 BASIC", "0.001 SEF", "0.2 AAA"]
->
["0.2 AAA", "0.01 BASIC", "0.015 BASIC", "0.2 BASIC", "0.001 SEF", "0.01 SEF"] 
Run Code Online (Sandbox Code Playgroud)