Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript/jQuery排序数组_Javascript_Jquery_Arrays_Sorting - Fatal编程技术网

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(),但它不起作用。非常有效,谢谢!