Сортировать JavaScript String Array, содержащий числа - PullRequest
4 голосов
/ 24 июня 2010

У меня есть массив в JavaScript, который содержит следующее:

  • ["Значение 1", "Значение 5".«Значение 10», «Значение 11»];

Как мне отсортировать этот массив, чтобы он не выглядел следующим образом:

  • ["Значение 1"," Значение 10 ".«Значение 11», «Значение 5»];

Но как:

  • [«Значение 1», «Значение 5».«Значение 10», «Значение 11»];

Любая помощь будет отличной.

Ответы [ 3 ]

9 голосов
/ 24 июня 2010

Вам нужно извлечь числовые значения из строк и отсортировать по ним, как сказал 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 голос
/ 24 июня 2010

Если вы увлечены написанием этого самостоятельно, вы можете просто проанализировать элементы с помощью регулярного выражения и сравнить вторую часть.Они будут соответствовать чему-то вроде

"Значение \ с [1-9] [0-9] *"

0 голосов
/ 24 июня 2010

вам нужна естественная сортировка. Я не думаю, что есть встроенная реализация в JS, но вы можете использовать некоторые библиотеки. например: phpjs - natcasesort

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...