我需要使用纯粹的JavaScript对这种格式的数组进行排序。
var arr = ["0.01 BASIC", "0.01 SEF", "0.015 BASIC"];
我需要的是先按小数排序,然后按字符串排序,并产生与下面类似的输出结果;
arr = ["0.01 BASIC", "0.015 BASIC", "0.01 SEF"];
我不能使用jQuery来进行排序。只能使用纯粹的好老的JavaScript。
我需要使用纯粹的JavaScript对这种格式的数组进行排序。
var arr = ["0.01 BASIC", "0.01 SEF", "0.015 BASIC"];
arr = ["0.01 BASIC", "0.015 BASIC", "0.01 SEF"];
我不能使用jQuery来进行排序。只能使用纯粹的好老的JavaScript。
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]);
});
["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"]
sort
的解决方案。不错。 - elclanrs连续进行两次排序即可:
arr.sort(function(a,b){
// sort by words first
return a.match(/[a-z]+/i).join("")<b.match(/[a-z]+/i).join()?-1:1;
}).sort(function(a,b){
// sort by numbers next, but only if the words are equal
return a.match(/[a-z]+/i).join("")!==b.match(/[a-z]+/i).join("")?0:parseInt(a)<parseInt(b)?-1:1;
})
使用简单的 Javascript:FIDDLE
var xOriginal = ["0.01 BASIC", "0.015 BASIC", "0.01 SEF"];
var xTemp = "";
for(var i=0;i<=xOriginal.length-1;i++)
{
for(var j=1;j<=xOriginal.length-1;j++)
{
var xArr = xOriginal[i].split(" ");
var yArr = xOriginal[j].split(" ");
if((xArr[0] > yArr[0]) && (xArr[1] > yArr[1]))
{
xTemp = xOriginal[i];
xOriginal[i] = xOriginal[j];
xOriginal[j] = xTemp;
}
}
}
alert(xOriginal);
sort
函数。在这里看看 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort - elclanrs