Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 23.04.2002, 17:36
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 1  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
По умолчанию сортировка... угадайте от какого слова...

Код:
function retrace(what) {
	trace("");
	for (var i = 0; i<what.length; i++) {
		trace(i+" :: "+"{x: "+what[i].x+" ; y: "+what[i].y+"}");
	}
}
//
test= [{x:150, y:20}, {x:50, y:20}, {x:200, y:20}, {x:10, y:20}, {x:100, y:20}];
//
retrace(test);
test.sortOn("x");
retrace(test);
нууу.... сортировка определенно есть.... вот только что делает после сортировки объект со значением x=50 на последнем месте ?! либо я чего-то не понимаю, либо одно из двух....

Старый 23.04.2002, 18:06
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 2  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
Thumbs down сэр, на вас горят носки...

эврика, елкить....
там строковая сортировка происходит... так что надо что-то придумывать (ведущие нули, например, учитывать), либо самому сортировку писать...

а жаль...

вопрос в принципе снят...


Последний раз редактировалось Nox Noctis; 23.04.2002 в 18:13.
Старый 23.04.2002, 22:53
УильямБрэдберри вне форума Посмотреть профиль Отправить личное сообщение для УильямБрэдберри Посетить домашнюю страницу УильямБрэдберри Найти все сообщения от УильямБрэдберри
  № 3  
УильямБрэдберри
Мастер Цифрового Облика
 
Аватар для УильямБрэдберри

Регистрация: Apr 2000
Адрес: где-то там...
Сообщений: 4,510
Отправить сообщение для УильямБрэдберри с помощью AIM Отправить сообщение для УильямБрэдберри с помощью Yahoo
По умолчанию для других...

а надо было всего-то дописать метод.
см [RTFM]

order = function(a,b)
{
a = Number(a)
b = Number(b)
if (a > b) return -1
if (a < b) return 1
if (a == b) return 0
}

myArray.sortOn(order);

Старый 23.04.2002, 23:13
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 4  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
ув. тов. УильямБрэдберри,
при всем уважении к вашим творческим заслугам,
иногда стиль Ваших высказываний, предполагающий абсолютную убогость собеседника, несколько напрягает, что, конечно, является Вашим личным делом, но может травмировать людей с более хрупкой душевной организацией

я читал хелп, представляешь ?! да-да... и такое бывает...

но мне нужна сортировка по заданному _полю_ объекта в массиве _объектов_

за этим мне и понадобилась функция массив.сортОн !

применить стандартную сортировку с заданной сортировочной функцией мне не удалось... (либо это у меня руки кривые, либо не судьба)
поэтому я стал использовать сортОн ([RTFM] ), при применении которой и вспомнил о "строковости" сортировки...


Последний раз редактировалось Nox Noctis; 23.04.2002 в 23:16.
Старый 23.04.2002, 23:22
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 5  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
мм... хорошо, я признаю, что недоэкспериментировал с обычным сортом:

предложенный тобой код (тот же, который пытался использовать я) не работает,
но если внести Нумбер'ы в скобки ифов - то все пучком...

order = function (a, b) {
if (Number(a.x)<Number(b.x)) {
return -1;
}
if (Number(a.x)>Number(b.x)) {
return 1;
}
if (Number(a.x) == Number(b.x)) {
return 0;
}
};

хотя если делать так, то придется для сортировки по каждому из полей писать сортировочную функцию.... или придумать что-нибудь хитрецкое....


Последний раз редактировалось Nox Noctis; 23.04.2002 в 23:31.
Старый 24.04.2002, 04:00
john вне форума Посмотреть профиль Отправить личное сообщение для john Посетить домашнюю страницу john Найти все сообщения от john
  № 6  
john
МЕГАФЛЭШЕР

Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
Код:
//-------------------------------------------------------------------------
//	sort array elements by object property value (number)
//-------------------------------------------------------------------------

Array.prototype.sortOnNum = function(param)
{
	var sortOn_function = function(a,b)
	{
		var param = arguments.callee.param;
		a = Number(a[param]);
		b = Number(b[param]);
		return (a<b)*-1||(a>b)*1||0;
	}
	
	sortOn_function.param = param;
	this.sort(sortOn_function);
}
© john


Последний раз редактировалось john; 24.04.2002 в 04:02.
Старый 24.04.2002, 11:07
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 7  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
:))
все дети любят, все мамы советуют :D


Последний раз редактировалось Nox Noctis; 24.04.2002 в 11:09.
Старый 24.04.2002, 11:48
SPV вне форума Посмотреть профиль Отправить личное сообщение для SPV Найти все сообщения от SPV
  № 8  
SPV
 
Аватар для SPV

Регистрация: Jan 2000
Адрес: St-Petersburg
Сообщений: 1,229
Отправить сообщение для SPV с помощью ICQ
Мишань, а так:
Код:
function order (a, b) {
   if (a.x < b.x) {
     return -1;
   } else if (a.x > b.x) {
     return 1;
   } else {
     return 0;
   }
 }

function retrace (what) {
	trace ("");
	for (var i = 0; i<what.length; i++) {
		trace (i+" :: "+"{x: "+what[i].x+" ; y: "+what[i].y+"}");
	}
}
// 
test = [{x:150, y:20}, {x:50, y:20}, {x:200, y:20}, {x:10, y:20}, {x:100, y:20}];
// 
retrace(test);
test.sort(order);
retrace(test);
__________________
Two beer or not two beer?...

Старый 24.04.2002, 12:20
УильямБрэдберри вне форума Посмотреть профиль Отправить личное сообщение для УильямБрэдберри Посетить домашнюю страницу УильямБрэдберри Найти все сообщения от УильямБрэдберри
  № 9  
УильямБрэдберри
Мастер Цифрового Облика
 
Аватар для УильямБрэдберри

Регистрация: Apr 2000
Адрес: где-то там...
Сообщений: 4,510
Отправить сообщение для УильямБрэдберри с помощью AIM Отправить сообщение для УильямБрэдберри с помощью Yahoo
Цитата:
Оригинал написал(а) Nox Noctis
ув. тов. УильямБрэдберри,
при всем уважении к вашим творческим заслугам,
иногда стиль Ваших высказываний, предполагающий абсолютную убогость собеседника, несколько напрягает, что, конечно, является Вашим личным делом, но может травмировать людей с более хрупкой душевной организацией
Обычно люди читают мои "высказывания" наспех...
не обращая внимания на такую мелочь, как заголовок...
subj
потом обижаются...

там ж НАПИСАНО "ДЛЯ ДРУГИХ"
я -то грешным делом подумал, что такой продвинутый (без кавычек) флэшер , как Nox Noctis уже разобрался с какими-то там полями...
и поэтому он закрыл тему...

Я же, в свою очередь посчитав ее незавершенной, для других, интересующихся этой же темой я и написал те строки дабы натолкнуть остальных на нужную мысль...
и ни в коей мере не пытаясь как-то задеть якобы мифическую "убогость" первооткывателя топика

Старый 24.04.2002, 12:21
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 10  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
2SPV
Паш, почитал бы ты базар, который чуть выше написан

изначально вопрос был в чем:
почему сортирую числа, а, например число 50 ставится после числа 120... потом до меня дошло, что сортировка строковая и возник другой вопрос - а кто идет за клинским

и твой метод сортировки тоже будет сравнивать построково...

2УильямБрэдберри
извини, я тебя не так понял
вчера вечером настроение было паршивое, да еще так обидно стало, что не заметил сразу ту фишку с внесением нумберов внутрь (и врезультате столько всего нагородил...)... залезаю сюда - а тут как раз сообщение, что мол "все гениальное просто, обратное неверно"

а с полями я и правда разобрался... до того, как обычный сорт научился применять
если я вам покажу как именно я, кхм, "разобрался" - вы уржетесь


Последний раз редактировалось Nox Noctis; 24.04.2002 в 12:28.
Создать новую тему   Часовой пояс GMT +4, время: 20:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:48.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.