Сортировка строк в порядке убывания в Javascript (наиболее эффективно)? - PullRequest
0 голосов
/ 26 августа 2018

W3CSchools имеет такой пример:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();

Является ли это наиболее эффективным способом сортировки строк в порядке убывания в Javascript?

Обновление

Один из ответовиспользуя localeCompare.Просто любопытно, если мы сделаем reverse(), будет ли это работать для всех языков (может быть, это отдельный вопрос - просто дайте мне знать в комментариях)?

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Если вы считаете

obj.sort().reverse();

VS

obj.sort((a, b) => (a > b ? -1 : 1))

VS

obj.sort((a, b) => b.localeCompare(a) )

Победитель производительности: obj.sort().reverse().

Тестирование с массивом из 10.000 элементов, obj.sort().reverse() примерно в 100 раз быстрее, чем obj.sort( function ), и obj.sort( function ) (при использовании localCompare)

Производительностьтест здесь: https://jsperf.com/reverse-string-sort/1

0 голосов
/ 26 августа 2018

Использование только sort и reverse a> Z, что неправильно, если вы хотите заказать строчные и прописные строки:

var arr = ["a","b","c","A","B","Z"];

arr.sort().reverse();

console.log(arr)//<-- [ 'c', 'b', 'a', 'Z', 'B', 'A' ] wrong!!!

Английские символы

var arr = ["a","b","c","A","B","Z"];

arr.sort((a,b)=>b.localeCompare(a))

console.log(arr)

Специальные символы, использующие locales , в данном примере es (испанский)

var arr = ["a", "á", "b","c","A","Á","B","Z"];

arr.sort((a, b) => b.localeCompare(a, 'es', {sensitivity: 'base'}))


console.log(arr)

чувствительность в этом случае составляет base :

Только строки, отличающиеся базовыми буквами, сравниваются как неравные.Примеры: a ≠ b, a = á, a = A.

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