这是我的数组:
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 03:38:04
您希望匹配多个字符-您的正则表达式只匹配一个字符(使用的类包含更多不需要的字符而不是数字字符)。试试这个正则表达式(它可以匹配任何整数或小数点数字):/[-+]?[0-9]*\.?[0-9]+/
发布于 2014-02-19 04:14:45
这对我很有效:
var arr=["Iteration 3.1","Iteration 3.2","Iteration 2.2","Iteration 2.3","Iteration 2.1"];
arr.sort(function(a,b){
a=a.split(" ");
b=b.split(" ");
var an=parseFloat(a[1],10);
var bn=parseFloat(b[1],10);
return an<bn?1:-1;
});发布于 2014-02-19 03:38:58
numeric = new Array();
function numOrdDesc(a, b){ return (b-a); }
var arr=["Iteration 3.1","Iteration 3.2","Iteration 2.2","Iteration 2.3","Iteration 2.1", "Iteration 10.1"];
for (i=0;i<arr.length;i++) {
numeric.push(parseFloat(arr[i].replace('Iteration ','')));
}
console.log(numeric.sort( numOrdDesc ));http://jsfiddle.net/xuXGv/1/
这里的帮助:http://javascript.about.com/library/blsort.htm。附注:可以很容易地添加“‘Iteration”字符串...:)
https://stackoverflow.com/questions/21863597
复制相似问题