Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 20.06.2011, 15:44
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,505

FINoM
К чему оно, чем те встроенный sort() не нра?)
__________________
29375, 35

Последний раз редактировалось Aetae, 20.06.2011 в 15:48.
Ответить с цитированием
  #12 (permalink)  
Старый 20.06.2011, 16:59
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Aetae
К чему оно, чем те встроенный sort() не нра?)
У меня неделю назад была задача отсортировать массив объектов по какой-нибудь ветви (например, obj.a.b.c). Задачу нужно было решить быстро, поэтому воспользовался "пузырьком" и некоторыми извращениями.
Ответить с цитированием
  #13 (permalink)  
Старый 20.06.2011, 18:49
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,505

arr.sort(functon(obj,obj2){return obj.a.b.c-obj2.a.b.c})
?
__________________
29375, 35
Ответить с цитированием
  #14 (permalink)  
Старый 20.06.2011, 19:31
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Aetae
arr.sort(functon(obj,obj2){return obj.a.b.c-obj2.a.b.c})
Хмм... А минус тут причем? http://javascript.ru/Array/sort - вот тут написано, что функция может возвращать 0, -1, 1, то есть по сути смотрится знак числа, не беря в расчет значение (грубо говоря, -1==-34, 1==7.53, 0==0)?
Насколько кроссбраузерен этот метод?
Как получить исходный массив? Только клонированием?

Стыдно что я раньше о таком не знал, просто чудесный метод.
x = document.getElementsByTagName('a');
a = Array.prototype.slice.call(x, 0);
a.sort(function(n1, n2){
  var h1 = n1.innerHTML,
      h2 = n2.innerHTML;
  return h1<h2 ? -1 : (h1>h2 ? 1 : 0)});
Вот тебе и сортировка нод по какому-нибудь параметру.

Последний раз редактировалось FINoM, 20.06.2011 в 19:52.
Ответить с цитированием
  #15 (permalink)  
Старый 20.06.2011, 19:51
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,505

Вопрос:
>Хмм... А минус тут причем?

Ответ:
>http://javascript.ru/Array/sort - вот тут написано, что функция может возвращать 0, -1, 1, то есть по сути смотрится знак числа, не беря в расчет значение (грубо говоря, -1==-34, 1==7.53, 0==0)?

>Насколько кроссбраузерен этот метод?
Полностью)
__________________
29375, 35
Ответить с цитированием
  #16 (permalink)  
Старый 20.06.2011, 20:12
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,505

sort кстати не привязан к Array, его также можно напрямую применять к x.


Вообще чаще приходится юзать не sort(), а sort(function(a,b){return a-b}) ибо:
arr=[ 111 , 222, 12 , 33, 444]

alert('sort() : \n' + arr.sort())

alert('sort(function(a,b){return a-b}) : \n' + arr.sort(function(a,b){return a-b}))

alert('sort(function(a,b){return b-a}) : \n' + arr.sort(function(a,b){return b-a}))
__________________
29375, 35

Последний раз редактировалось Aetae, 20.06.2011 в 22:18.
Ответить с цитированием
  #17 (permalink)  
Старый 21.06.2011, 09:55
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Aetae
sort кстати не привязан к Array, его также можно напрямую применять к x.
Все методы массивов не привязаны к массивам. Их можно применять к любым другим объектам, у которых есть числовые свойства и length.

Но только не в IE, там методы массивов нельзя применять к DOM-объектам, т.к. DOM там находится в стороне от JavaScript. Так что этот код тоже не будет работать
Сообщение от FINoM
x = document.getElementsByTagName('a');
a = Array.prototype.slice.call(x, 0);
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с div И animate g00000dman jQuery 2 24.03.2011 23:34
Закрытие прозрачного div при щелчке мыши в любой его области mav1 Элементы интерфейса 8 09.02.2011 19:25
Проблема с load в div и импортом стороннего кода с помощью javascript 1quick1 Events/DOM/Window 9 04.02.2011 13:16
animate, всплывающий div box сделать по центру zero_mod jQuery 1 27.10.2010 00:23
Появление блоков div в зависимости от radio Oracool Events/DOM/Window 1 04.12.2009 18:39