Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   javascript сортировка option и value по алфавиту (https://javascript.ru/forum/dom-window/74169-javascript-sortirovka-option-i-value-po-alfavitu.html)

j0hnik 19.06.2018 21:15

Alexandroppolus,
может и есть но, с маленьким вроде все логично выводит, а там пытается "хитрить"

laimas 19.06.2018 21:20

Цитата:

Сообщение от рони
/по умолчанию сортировка строк a > b ? 1 : a < b ? -1 : 0

var a = ['11-05-2018', '12-05-2017', '10-04-2017'];
a.sort();

alert(a);
alert('12-05-2017' > '11-05-2018')


Опасно так все строки сортировать ;)

рони 19.06.2018 21:30

laimas,
ты сортируешь строки, а результат хочешь как от даты, в строках "8" больше чем "20"

laimas 19.06.2018 21:44

Цитата:

Сообщение от рони
ты сортируешь строки, а результат хочешь как от даты

А какая разница, дата ведь это строковое значение, именно поэтому не стоит оперировать форматом даты отличном от европейского - YYYY-MM-DD. Но ведь не запрещено. :)

Такие же проблемы могут быть и просто с числами (уберите дефисы, результат не лучше будет, так как это строки). А есть еще понятие "натуральная сортировка", в JS готовой функции для нее тоже нет.

рони 19.06.2018 21:52

laimas,
не осилил

laimas 19.06.2018 22:03

Цитата:

Сообщение от рони
не осилил

Что именно? Хотя согласен, не совсем корректно написал. :)

Ну например есть массив имен файлов, которые надо отсортировать:

var a = ["img12.png", "img10.png", "img2.png", "img1.png"];
a.sort();

alert(a);


и получим не то чего бы хотелось - img1.png, img2.png, img10.png, img12.png. Проблема в том, что сравнение a > b будет косячит с числами.

рони 19.06.2018 22:05

laimas,
спасибо, но я пас.

рони 19.06.2018 22:12

Цитата:

Сообщение от laimas
Ну например есть массив имен файлов, которые надо отсортировать:

возможно я что-то не понимаю ...
var a = ["img12.png", "img10.png", "img2.png", "img1.png"];
a.sort(function(a,b) {
  return a.match(/\d+/)[0]  - b.match(/\d+/)[0]
});

alert(a);

laimas 19.06.2018 22:18

Цитата:

Сообщение от рони
возможно я что-то не понимаю ...

Все вы понимаете. ) Данный код вернет нужное, но только конкретно к данному случаю. Собственно вся эта тема и рассматривала "идеальный случай". :)

Проверьте свой код с таким, например, массивом: ["iag12.png", "iq10.png", "img2.png", "img1.png"] - с цифрами все будет Ок, но ведь не верно же будет. )

рони 19.06.2018 22:26

Цитата:

Сообщение от laimas
Проверьте свой код с таким,

а зачем? с новым набором будет иной код ... какое будет тз, такая и будет сортировка, ...


Часовой пояс GMT +3, время: 17:16.