对包含数字的JavaScript String Array进行排序

时间:2010-06-24 09:07:56

标签: javascript string arrays sorting numbers

我在JavaScript中有一个包含以下内容的数组:

  • [“值1”,“值5”。 “价值10”,“价值11”];

我将如何对此数组进行排序,使其不显示如下:

  • [“值1”,“值10”。 “价值11”,“价值5”];

但是:

  • [“值1”,“值5”。 “价值10”,“价值11”];

任何帮助都会很棒。

3 个答案:

答案 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"]);

答案 1 :(得分:1)

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

的东西
  

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

答案 2 :(得分:0)

你需要自然分类。我不认为js中有内置的实现,但你可以使用一些库。例如:phpjs - natcasesort