Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 19.06.2018, 22:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от рони
с новым набором будет иной код ... какое будет тз, такая и будет сортировка, ...
Не много ли случаев? Писать так уж пользовательскую сортировку сразу, так как с буквенно-цифровыми строками не достаточно только a > b ? 1 : a < b ? -1 : 0.
Ответить с цитированием
  #42 (permalink)  
Старый 19.06.2018, 22:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

laimas,
бред какой-то ... я писал выше, что не понимаю ...
Ответить с цитированием
  #43 (permalink)  
Старый 19.06.2018, 23:02
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от j0hnik Посмотреть сообщение
Alexandroppolus,
может и есть но, с маленьким вроде все логично выводит, а там пытается "хитрить"
да нет никакой хитрости, результат логичный в обоих кейсах.
сейчас посмотрел в консоли, что выведет
var arr = [1, 2, 3, 4, 5, 6];
arr.sort(function(a, b) { console.log(a, b, arr); return 1; })

судя по логу, тут "сортировка вставками". И в callback элементы попадают ровно в той последовательности, в какой изначально друг относительно друга находятся.

а если длина более 10, то используется "быстрая сортировка", с перекидываниями элементов туда-сюда, и пары образуются как возрастающие, так и убывающие
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
arr.sort(function(a, b) { console.log(a, b, arr); return 1; })
Ответить с цитированием
  #44 (permalink)  
Старый 19.06.2018, 23:15
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

laimas,

не совсем понял, какую мысль ты хочешь донести.
есть sort, который сортирует элементы как строки, по возрастанию
для любого другого кейса не обойтись без кастомной функции сравнения
в чем загвоздка?
Ответить с цитированием
  #45 (permalink)  
Старый 20.06.2018, 04:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Никакого подвоха, но не под каждое же имя файла своя функция. А такого добра много, адреса и т.п.
Ответить с цитированием
  #46 (permalink)  
Старый 20.06.2018, 04:47
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

console.log(["iag12.png", "iq10.png", "img2.png", "img1.png"].sort(function(a, b) {
	var aw = a.match(/\D+/)[0],
	bw = b.match(/\D+/)[0],
	ad = a.match(/\d+/)[0],
	bd = b.match(/\d+/)[0];
  return (aw > bw) - (aw < bw) || (ad-bd) - (bd-ad);
}));
Ответить с цитированием
  #47 (permalink)  
Старый 20.06.2018, 05:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

j0hnik,
ну чего под ответ подгонять Сразу пишите функцию для натуральной сортировки (хотя для JS это уже давно написано), а данная то опять для этого конкретного случая.
Ответить с цитированием
  #48 (permalink)  
Старый 20.06.2018, 07:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от laimas
Сразу пишите функцию для натуральной сортировки (хотя для JS это уже давно написано),
можно узнать о чём речь?
Ответить с цитированием
  #49 (permalink)  
Старый 20.06.2018, 08:08
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от рони
можно узнать о чём речь?
Достаточно заменить в коде j0hnik, массив, и пусть это будут например адреса - ["a 10a", "a 1b", "a 2", "a 1"], и не получим желаемого, ибо его код "подогнан" под конкретный вопрос. Что же не написать одну пользовательскую функцию, а не всякий раз новую под конкретный случай? Проблемы когда строка, это числа и буквы ведь давно известна, поэтому и решения готовые уже давно есть/предлагаются.

А если стоит задача сортировки, к примеру, списка файлов, с возможностью сортировки по набору параметров (пусть отсортировать по типу файлов и имени, то есть первичное тип, а в нем уже имена и т.п.), тогда да, это можно считать узко специализированной задачей (ТЗ), заточили под нее скрипт.
Ответить с цитированием
  #50 (permalink)  
Старый 20.06.2018, 08:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от laimas
решения готовые уже давно есть/предлагаются.
спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JavaScript - Option, результаты из выпадающего меню. Результаты с большим количеством voron1990 Общие вопросы Javascript 3 30.04.2015 09:04
Сортировка таблицы по алфавиту dozer Events/DOM/Window 6 18.10.2014 00:22
как с помощью javascript установить selected для тега option? re-kru-t Общие вопросы Javascript 1 19.02.2011 15:49
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34