这是我的数组:
var arr=["Iteration 3.1","Iteration 3.2","Iteration 2.2","Iteration 2.3","Iteration 2.1"];预期输出为:
Iteration 3.2
Iteration 3.1
Iteration 2.3
Iteration 2.2
Iteration 2.1我尝试过:
arr.sort(function(a,b){
a=a.match(/[^a-zA-Z]/);
b=b.match(/[^a-zA-Z]/);
var an=parseFloat(a,10);
var bn=parseFloat(b,10);
return an<bn?1:(an>bn?-1:(a<b?-1:(a>b?1:0)));
});我现在得到的是:
Iteration 3.1
Iteration 3.2
Iteration 2.2
Iteration 2.3
Iteration 2.1jsfiddle link
发布于 2014-02-19 05:31:54
您可以匹配每一项的整数和小数部分-
var arr=["Iteration 3.1","Iteration 3.2","Iteration 2.2",
"Iteration 2.3","Iteration 2.1"];
arr.sort(function(a, b){
var a1= a.match(/\d+(\.\d+)?/),
b1= b.match(/\d+(\.\d+)?/);
return b1[0]-a1[0];
});
/* returned value: (Array)
Iteration 3.2, Iteration 3.1, Iteration 2.3, Iteration 2.2, Iteration 2.1
*/https://stackoverflow.com/questions/21863597
复制相似问题