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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.03.2011, 15:14
stweet вне форума Посмотреть профиль Отправить личное сообщение для stweet Найти все сообщения от stweet
  № 1  
Ответить с цитированием
stweet
 
Аватар для stweet

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
По умолчанию Есть ассоциативный массив. Как узнать сколько в нём объектов?

Вопрос таков. Есть ассоциативный массив как узнать сколько в нём объектов?
Код AS3:
arr1[0] = 0;
arr1[1] = 1;
arr1[2] = 2;
 
arr2["one"] = "one";
arr2["two"] = "two";
arr2["three"] = "three";
 
// Как сравнить длину массивов.
// if (arr1.length == arr2.length) {}
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 20.03.2011, 15:26
ERrorMAKros вне форума Посмотреть профиль Отправить личное сообщение для ERrorMAKros Посетить домашнюю страницу ERrorMAKros Найти все сообщения от ERrorMAKros
  № 2  
Ответить с цитированием
ERrorMAKros
 
Аватар для ERrorMAKros

Регистрация: May 2008
Адрес: Земля.Украина.Одесса
Сообщений: 219
Отправить сообщение для ERrorMAKros с помощью ICQ Отправить сообщение для ERrorMAKros с помощью Skype™
Массив с индексами которые не являются цифрами - будет считаться object`ом, ...тогда свойство length бессмыслен! Он ничего не вернет! Придется проходиться циклом и считать каждый элемент.

arr1.length - является верным;
если arr1 будет содержать в себе 2 сл. элемента, у которых первый индекс будет равен 1 и другой 1000 то length вернет 1000!!!!

В случае с arr2 - это уже будет работать как object; т.е. придется проходиться по каждому элементу:

Код AS3:
var intArrayLength: int;
for each(var strIndex: String in arr2) intArrayLength++;
trace("arr2 length: " + intArrayLength);

Старый 20.03.2011, 15:55
stweet вне форума Посмотреть профиль Отправить личное сообщение для stweet Найти все сообщения от stweet
  № 3  
Ответить с цитированием
stweet
 
Аватар для stweet

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
спасибо.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Вернее указывать Object вместо String в таком случае.

Старый 20.03.2011, 19:36
scarbo вне форума Посмотреть профиль Отправить личное сообщение для scarbo Найти все сообщения от scarbo
  № 5  
Ответить с цитированием
scarbo
 
Аватар для scarbo

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
Кстати, если унаследоваться от Proxy, то можно и по length узнавать
__________________
Я просто добрый шутник.

Старый 20.03.2011, 20:31
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
И пожалуйста, не называйте это ассоциативным массивом. При кажущемся сходстве, это таблица (или, если угодно, карта), а не массив. Разница в том, что в массиве допустимы повторяющиеся ключи, а в таблице - нет. На уровне стандартных компонент языка ассоциативных массивов в AS3 нет, но их можно заменить близкими по духу, самописными массивами элементов, где каждый элемент содержит объект типа пары имя-значение, или такими же самописными связными ассоциативными списками (где содержимое списка - меньшие списки состоящие ровно из двух елементов, головы и хвоста).
__________________
Hell is the possibility of sanity

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Хм, интересно.
А как в AS3 в массиве можно сделать 2 повторяющихся ключа? Один перетрет другой ведь.

Старый 20.03.2011, 21:05
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Почему? все тот же XMLList / XML, или симитировать их работу с помощью прокси. Только я не уверен, что прям в этом бывает такая жизненная необходимость. Т.е. мы можем, например, всегда возвращать массив при обращении к какому-то свойству, или запоминать последний индекс и в следующий раз возвращать следующий по списку.
__________________
Hell is the possibility of sanity

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Цитата:
все тот же XMLList / XML
Это спорно. Можно сказать, что по ключу key возвращается XMLList, а не ключ key является повторяющимся. Но тут мои домыслы.

Меня больше интересует массив вроде Array. Как туда записать 2 повторяющихся ключа?

Старый 20.03.2011, 21:59
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Самый простой пример, без классов
Код AS3:
private function listExample():void
{
	var head:Object = { name: "name", value: 1 };
	var accosList:Object = { next: head };
 
	head = { name: "name", value: 2 };
	accosList.next.next = head;
 
	var current:Object = accosList;
 
	while (current.next)
	{
		trace("modeled property name:",  current.next.name);
		trace("modeled property value:",  current.next.value);
		current = current.next;
	}
}
И таким образом мы можем хранить сколько угодно свойств с одним и тем же именем. Ну а дальше уже договариваться, что именно возвращать если обращаются к свойству, можно первый попавшийся можно все.
__________________
Hell is the possibility of sanity

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

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

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


 


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


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