Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.11.2012, 16:54
Новичок на форуме
Отправить личное сообщение для againagain Посмотреть профиль Найти все сообщения от againagain
 
Регистрация: 14.11.2012
Сообщений: 2

функция сортировки массива
Доброго времени суток, изучаю js сравнительно недавно.
Добрался до сортировки числовых значений массива с помощью функции:
function compareNumbers(n1, n2) 
	{
		if (n1 == n2) return 0;
		if (n1 > n2) 
			return 1;
		else 
			return -1;
	}

Наиболее доступный ответ, что я нашёл:

Цитата:
Меньше 0: элемент «a» будет помещен ранее(с меньшим индексом) «b»
Ноль: «a» и «b» одинаковы, сортировка не производится.
Больше 0: элемент «b» будет помещен ранее(с меньшим индексом) «a».
Но мне всё равно не ясно, как -1,0,1 в возврате формируют сортировку.

Последний раз редактировалось againagain, 14.11.2012 в 17:24.
Ответить с цитированием
  #2 (permalink)  
Старый 14.11.2012, 21:07
Аватар для a_l
a_l a_l вне форума
Кандидат Javascript-наук
Отправить личное сообщение для a_l Посмотреть профиль Найти все сообщения от a_l
 
Регистрация: 15.09.2011
Сообщений: 143

againagain, вопрос ведь о методе sort() ?
Возможно это поможет:
function compareNumbers(n1, n2) {
  alert('Сравниваю '+n1+' c '+n2)
  if (n1 == n2) return 0;
  if (n1 > n2) return 1;
  else return -1;
}
Ответить с цитированием
  #3 (permalink)  
Старый 14.11.2012, 22:21
Аспирант
Отправить личное сообщение для bFree Посмотреть профиль Найти все сообщения от bFree
 
Регистрация: 19.08.2008
Сообщений: 42

againagain,
Функция сортировки в JS по любому алгоритму берет два элемента и хочет узнать, какой из них больше: первый или второй.
Для того, чтобы узнать это, она скармливает эти два элемента другой фунцкии, которая должна сравнить их между собой (это как раз твоя функция).

Если функция сравнения вернет 0, то функция сортировки понимает, что два элемента равны
Если вернет 1, то первый элемент больше второго
Если -1, то первый элемент меньше второго.

В зависимости от этого, функция сортировки либо переставит эти элементы местами, либо сделает что-то еще (зависит от ее алгоритма).
Так она будет повторять много раз, пока не получит до конца отсортированный массив.
Ответить с цитированием
  #4 (permalink)  
Старый 15.11.2012, 09:27
Новичок на форуме
Отправить личное сообщение для againagain Посмотреть профиль Найти все сообщения от againagain
 
Регистрация: 14.11.2012
Сообщений: 2

да, речь шла о методе sort()
Теперь ясно, большое спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция удаления элемента массива Кирюха =) jQuery 5 06.09.2012 01:17
Сортировка массива по ключу RazZzeR Элементы интерфейса 9 21.07.2012 19:31
Анимация сортировки массива Sergey111 Общие вопросы Javascript 3 06.05.2012 11:51
Определить из какого элемента массива была вызвана функция BorodinKO Общие вопросы Javascript 2 31.03.2012 12:20
есть ли стандартная функция вывода сожержимого массива что то вроди print_r в PHP??? mazovski Events/DOM/Window 4 20.08.2009 12:52