Javascript 基于十进制子串的字母数字元素解析与排序
这是我的阵列:Javascript 基于十进制子串的字母数字元素解析与排序,javascript,Javascript,这是我的阵列: 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 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)));
});
要匹配多个字符-正则表达式只匹配一个字符(使用包含比数字字符更多不需要的字符的类)。请尝试此正则表达式(与任何整数或小数点匹配):/[-+]?[0-9]*\.?[0-9]+/
numeric=new Array();
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 ));
函数numOrdDesc(a,b){返回(b-a);}
var arr=[“迭代3.1”、“迭代3.2”、“迭代2.2”、“迭代2.3”、“迭代2.1”、“迭代10.1”];
对于(i=0;i
这里的帮助:.p.S.“迭代”字符串可以很容易地添加…:)这对我很有用:
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;
});
var arr=[“迭代3.1”、“迭代3.2”、“迭代2.2”、“迭代2.3”、“迭代2.1”];
arr.sort(函数(a,b){
a=a.拆分(“”);
b=b.拆分(“”);
var an=parseFloat(a[1],10);
var bn=parseFloat(b[1],10);
返回一个您可以匹配每个项目的整数和小数部分-
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
*/
尝试将表达式更改为:/[^a-zA-Z]/(即添加空格)。parseInt不喜欢空格。此外,请使用parseFloat,因为parseInt将删除句点和小数。尝试过后,它不会作为字符排序而不是数字排序,在“迭代10.1”中会出现故障。
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
*/