19.06.2018, 21:15
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Alexandroppolus,
может и есть но, с маленьким вроде все логично выводит, а там пытается "хитрить"
|
|
19.06.2018, 21:20
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от рони
|
/по умолчанию сортировка строк 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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
laimas,
ты сортируешь строки, а результат хочешь как от даты, в строках "8" больше чем "20"
|
|
19.06.2018, 21:44
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от рони
|
ты сортируешь строки, а результат хочешь как от даты
|
А какая разница, дата ведь это строковое значение, именно поэтому не стоит оперировать форматом даты отличном от европейского - YYYY-MM-DD. Но ведь не запрещено.
Такие же проблемы могут быть и просто с числами (уберите дефисы, результат не лучше будет, так как это строки). А есть еще понятие "натуральная сортировка", в JS готовой функции для нее тоже нет.
|
|
19.06.2018, 21:52
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
laimas,
не осилил
|
|
19.06.2018, 22:03
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от рони
|
не осилил
|
Что именно? Хотя согласен, не совсем корректно написал.
Ну например есть массив имен файлов, которые надо отсортировать:
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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
laimas,
спасибо, но я пас.
|
|
19.06.2018, 22:12
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
Сообщение от 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);
Последний раз редактировалось рони, 19.06.2018 в 22:17.
|
|
19.06.2018, 22:18
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от рони
|
возможно я что-то не понимаю ...
|
Все вы понимаете. ) Данный код вернет нужное, но только конкретно к данному случаю. Собственно вся эта тема и рассматривала "идеальный случай".
Проверьте свой код с таким, например, массивом: ["iag12.png", "iq10.png", "img2.png", "img1.png"] - с цифрами все будет Ок, но ведь не верно же будет. )
|
|
19.06.2018, 22:26
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
Сообщение от laimas
|
Проверьте свой код с таким,
|
а зачем? с новым набором будет иной код ... какое будет тз, такая и будет сортировка, ...
|
|
|
|