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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.04.2010, 19:13
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 11  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Именно.

Старый 15.04.2010, 19:39
Anghram вне форума Посмотреть профиль Отправить личное сообщение для Anghram Найти все сообщения от Anghram
  № 12  
Ответить с цитированием
Anghram

Регистрация: May 2009
Сообщений: 14
После других языков программирования это звучит удивительно нереально.

Всем спасибо за помощь, буду думать как пролезть другим путём

Добавлено через 30 минут
Решил всё-таки покопаться дальше.

Для чего тогда существуют методы сортировки элементов массива, если они выводятся в случайном порядке? Это противоречит вашим словам, что они выводятся в произвольном порядке.


Последний раз редактировалось Anghram; 15.04.2010 в 20:12.
Старый 15.04.2010, 21:25
Dweem вне форума Посмотреть профиль Отправить личное сообщение для Dweem Найти все сообщения от Dweem
  № 13  
Ответить с цитированием
Dweem
 
Аватар для Dweem

Регистрация: Dec 2006
Адрес: 66°32′00″ с. ш. 66°38′00″ в. д.
Сообщений: 85
для того чтобы можно было сделать так:
Код AS3:
for (var i:uint = 1; i < array.length; i++)
trace(array[i]);

Старый 15.04.2010, 21:29
Anghram вне форума Посмотреть профиль Отправить личное сообщение для Anghram Найти все сообщения от Anghram
  № 14  
Ответить с цитированием
Anghram

Регистрация: May 2009
Сообщений: 14
Так — это вывести всё в первоначальном варианте? Сортировка в таком случае не будет учтена.

На всякий случай напомню про ассоциативные массивы. for решает лишь в определённых случаях, когда нумерация инкрементная без пробелов, в остальных используется for each (for ... in).

Старый 15.04.2010, 22:24
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 15  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
У вас каша в голове. Во флеше массивы это не честные массивы.
for in гуляет по памяти, нашел - ага! Это элемент массива! Давай ка его - отсюда и случайный порядок.
А порядок в массиве задается его индексом - сортировка сортирует элементы так, чтобы, например, наименьшее число было с самым мелким индексом.
И тогда при прямом проходе массива
Код AS3:
for (var i:uint = 1; i < array.length; i++)
trace(array[i]);
выведутся значения по возрастанию, но память как была кашей, так и идёт.

Старый 16.04.2010, 01:18
Anghram вне форума Посмотреть профиль Отправить личное сообщение для Anghram Найти все сообщения от Anghram
  № 16  
Ответить с цитированием
Anghram

Регистрация: May 2009
Сообщений: 14
Дык каша и возникла из-за того, что флеш работает с массивами как-то слишком по-своему.

Как я понял из экспериментов — он слабо разбирается что такое ключи и ассоциативные массивами. Если работать лишь со значениями — всё в порядке. Но тогда страдает вычислительная часть.

Если брать свой пример выше:
Код:
user[123]['name'] = "Petya"
user[123]['surname'] = "Ivanov"
user[427]['name'] = "Vanya"
user[427]['surname'] = "Sidorov"
Такой массив должен выглядеть так:
Код:
user[0]['id'] = 123;
user[0]['name'] = "Petya"
user[0]['surname'] = "Ivanov"
user[1]['id'] = 427
user[1]['name'] = "Vanya"
user[1]['surname'] = "Sidorov"
Получается, если юзер 427 поменяет имя, то мне надо каждый раз искать такую запись.

Старый 16.04.2010, 01:51
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 17  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Зачем ты в качестве ключа указываешь какое-то число? Пихай его тоже в объект:

Код AS3:
var user:User = new User();
user.id = 427;
user.name = "Petya";
user.surname = "Ivanov";
 
users.push(user);
 
//Сортировка по id
users.sortOn("id");
 
//Проход по сортированному массиву
for (var i:int =0; i < users.length; i++){
   var user:User = users[i];
}
 
...
//Дополнительный класс пользователя
class User extends Object{
   public var id:int;
   public var name:String;
   public var surname:String;
}
По простому: Ассоциативные массивы = объект != массив. Ты когда for...in'ом проходишься по всем свойствам объекта - ты надеешься получить их в том порядке котором ты их отсортировал? Я лично не умею сортировать свойства объекта.


Последний раз редактировалось Rzer; 16.04.2010 в 01:54.
Старый 16.04.2010, 10:17
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 18  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Как в этом случае взять конкретного юзера по id?
Перебирать весь массив для поиска объекта с нужным id?
Тут надо решить что важнее: быстрый доступ - тогда будет хэш-список или сортировка (массив).
__________________
Отряд Котовскага

Старый 16.04.2010, 11:32
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 19  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Так можно совместить приятное с полезным: сделать один обычный массив, а другой ассоциативный.

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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