javascript/jQuery排序数组
我有一个如下所示的值数组:javascript/jQuery排序数组,javascript,jquery,arrays,sorting,Javascript,Jquery,Arrays,Sorting,我有一个如下所示的值数组: var myArr = ["S1_FORM", "S3_FORM", "S2_FORM", "S2_2_FORM"]; ["S1_FORM", "S2_FORM", "S2_2_FORM", "S3_FORM"] 我需要把它们从最低到最高排序 我希望此阵列的方式如下所示: var myArr = ["S1_FORM", "S3_FORM", "S2_FORM", "S2_2_FORM"]; ["S1_FORM", "S2_FORM", "S2_2_FORM",
var myArr = ["S1_FORM", "S3_FORM", "S2_FORM", "S2_2_FORM"];
["S1_FORM", "S2_FORM", "S2_2_FORM", "S3_FORM"]
我需要把它们从最低到最高排序
我希望此阵列的方式如下所示:
var myArr = ["S1_FORM", "S3_FORM", "S2_FORM", "S2_2_FORM"];
["S1_FORM", "S2_FORM", "S2_2_FORM", "S3_FORM"]
基本上这些数字应该是:1,2,2.2,3
我怎样才能做到这一点
我尝试使用.sort(),但它返回:
["S1_FORM", "S2_2_FORM", "S2_FORM", "S3_FORM"]
请注意,“2_2”在“2_2”之前。不应该
var myArr = ["S1_FORM", "S3_FORM", "S2_FORM", "S2_2_FORM"];
myArr.sort();
如果需要其他排序逻辑,请使用jQuery。这是一个普通的JavaScript解决方案
var myArr = ["S1_FORM", "S3_FORM", "S2_FORM", "S2_2_FORM"];
var extractNumber = function(str) {
var m = str.match(/^S(\d+)_(?:(\d+)_)?/);
return parseFloat(m[1] + '.' + m[2])
};
myArr.sort(function(a, b) {
return extractNumber(a) - extractNumber(b);
});
console.log(myArr);
所以你要用普通正则表达式提取一个数字,然后用对它进行排序。你做过什么研究吗?为什么不呢?这可能会有帮助。。。我尝试过使用.sort(),但它不起作用。请参阅有关比较函数的部分。如果将有
S20\u
和S3\u
项,该怎么办?我已尝试使用.sort(),但它不起作用。非常有效,谢谢!