2014-09-13 7 views
1

Я хотел бы отсортировать массив в JavaScript как asc. После того, как я использовал метод сортировки, результат выглядит следующим образом.Как отсортировать массив в Javascript как C#?

[ '123, '12', '1A1', '1A', '1a', 'A1', 'A2', 'AB', 'A', 'Ab', 'a1', 'a2', 'aB', 'ab' ]

Когда я использую рода Array.Sort() на C#, результат, как показано ниже.

{ "12", "123", "1a", "1A", "1A1", "A", "a1", "A1", "a2", "A2", "ab", "aB", "Ab", "AB" }

Фактически C# сортировать способ, что я хочу, так как осуществить это в JavaScript? Кто-нибудь выполнил эту задачу раньше? Функция компаратора действительно ценит.

+0

почему это вниз голосование, и ответы на голоса. Не получилось, написать новую функцию не ответ на вопрос. – mybirthname

+0

@ T.J.Crowder Указанный им порядок - это то, что дает C# Array.Sort. –

+0

Вы заметили, что A - один символ? Я предполагаю, что C# имеет специальную операцию внутри метода сортировки. Предположим, что C# sort - ожидаемый результат, теперь я хочу использовать JavaScript для его соответствия. – Damon

ответ

1

Array.prototype.sort использует сравнение строк по умолчанию. Кажется, что вы хотите сравнить без учета регистра - вы можете передать в функцию компаратора, который использует toLowerCase (но остерегайтесь разница с .toLocaleLowerCase!):

a.sort(function(a, b) { 
    a = a.toLowerCase(); b = b.toLowerCase(); 
    return a > b ? 1 : a < b ? -1 : 0; 
}); 
Смежные вопросы