对包含数字的JavaScript字符串数组进行排序

对包含数字的JavaScript字符串数组进行排序,javascript,string,arrays,sorting,numbers,Javascript,String,Arrays,Sorting,Numbers,我有一个JavaScript数组,其中包含以下内容: [“值1”、“值5”、“值10”、“值11”] 如何对该数组进行排序,使其不会出现以下情况: [“值1”、“值10”、“值11”、“值5”] 但作为: [“值1”、“值5”、“值10”、“值11”] 任何帮助都会很好。您需要自然排序。我认为js中没有内置的实现,但您可以使用一些库。例如:如果您热衷于自己编写,您可以使用正则表达式解析项目并比较第二部分。这些将匹配类似于 “值\s[1-9][0-9]*” 您需要从字符串中提取数值,并

我有一个JavaScript数组,其中包含以下内容:

  • [“值1”、“值5”、“值10”、“值11”]
如何对该数组进行排序,使其不会出现以下情况:

  • [“值1”、“值10”、“值11”、“值5”]
但作为:

  • [“值1”、“值5”、“值10”、“值11”]

任何帮助都会很好。

您需要自然排序。我认为js中没有内置的实现,但您可以使用一些库。例如:

如果您热衷于自己编写,您可以使用正则表达式解析项目并比较第二部分。这些将匹配类似于

“值\s[1-9][0-9]*”


您需要从字符串中提取数值,并根据这些数值进行排序,就像vlood所说的那样。例如,请尝试以下代码:

function mySort(arr)
{
    var regex = /Value\s([0-9]+)/;

    function map(str) {
        return Number(regex.exec(str)[1]);
    }

    return arr
    .sort(
        function (a,b) {
            var av = map(a), bv = map(b);
            return av < bv ? -1 : av > bv ? 1 : 0;
        })
}

mySort(["Value 1", "Value 10", "Value 11", "Value 5"]);
函数mySort(arr)
{
var regex=/Value\s([0-9]+)/;
功能图(str){
返回编号(regex.exec(str)[1]);
}
返回arr
.分类(
功能(a、b){
var av=map(a),bv=map(b);
返回avbv-1:0;
})
}
mySort([“值1”、“值10”、“值11”、“值5”);

看来,该主题已被废弃。。。如果所有值的前缀都完全相同,为什么不在需要显示时添加一个字符串前缀变量并只存储数值呢?如果它们是不同的和可变的,那么就像克格勃说的,你将需要一个自然的排序库