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

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

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

Регистрация: Nov 2001
Адрес: Москва
Сообщений: 155
По умолчанию Помогите с "формулировкой" и выборкой из массива.

Есть большой массив типа:

{id:1,numbers:2,3,2};
{id:2,numbers:4,1};
{id:3,numbers:5,1,2,3};
{id:4,numbers:4,4,5};
{id:5,numbers:5,1,1,1,2};

Не уверен, что правильно написал , но смысл, что есть порядковый номер id и для каждого порядкового номера есть numbers - массивчик из произвольно расположенных цифр от 1 до 5, минимум две цифры, максимум 5.

Как правильно мне создать с этим хозяйством массив и как скомандовать этому массиву "а покажи мне по порядку id , где в numbers содержится, к примеру, хоть одна цифра 2"?

Старый 08.05.2007, 17:30
screamge вне форума Посмотреть профиль Отправить личное сообщение для screamge Посетить домашнюю страницу screamge Найти все сообщения от screamge
  № 2  
Ответить с цитированием
screamge
Ветеран форума
 
Аватар для screamge

Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
можно так, хотя возможно есть способ лучше

Код:
var ar1:Array = new Array (2, 3, 2)
var ar2:Array = new Array (4, 1)
var ar3:Array = new Array (5, 1, 2, 3)
var ar4:Array = new Array (4, 4, 5)
var ar5:Array = new Array (5, 1, 1, 1, 2);

for (i = 1; i <=5; i++){
	for (j = 0; j <= 5; j++){
		if (this["ar" + i][j] == 2){
			trace (i) // выводит 1, 1, 3, 5
		}
	}
}
__________________
Free-lance | Twitter | Me


Последний раз редактировалось screamge; 08.05.2007 в 17:32.
Старый 08.05.2007, 18:05
BigDan вне форума Посмотреть профиль Отправить личное сообщение для BigDan Найти все сообщения от BigDan
  № 3  
Ответить с цитированием
BigDan
 
Аватар для BigDan

Регистрация: Apr 2006
Адрес: Kiev
Сообщений: 1,675
Отправить сообщение для BigDan с помощью ICQ
Лучше так делать:
Код:
var my_arr:Array = new Array();
my_arr[0] = {id:1,numbers:[2,3,4]};
......


Последний раз редактировалось BigDan; 08.05.2007 в 18:21.
Старый 08.05.2007, 18:08
screamge вне форума Посмотреть профиль Отправить личное сообщение для screamge Посетить домашнюю страницу screamge Найти все сообщения от screamge
  № 4  
Ответить с цитированием
screamge
Ветеран форума
 
Аватар для screamge

Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
Код:
ar1 = [2, 3, 2]
ar2 = [4, 1]
ar3 = [5, 1, 2, 3]
ar4 = [4, 4, 5]
если речь о сокращении идёт, в другом я не вижу превосходства.
__________________
Free-lance | Twitter | Me


Последний раз редактировалось screamge; 08.05.2007 в 18:10.
Старый 08.05.2007, 18:18
ccwds вне форума Посмотреть профиль Отправить личное сообщение для ccwds Посетить домашнюю страницу ccwds Найти все сообщения от ccwds
  № 5  
Ответить с цитированием
ccwds

Регистрация: Nov 2001
Адрес: Москва
Сообщений: 155
Спасибо! Понял!
Я только добавил break, может, это и не оптимально, но тогда выводит id, не повторяясь при нескольких нахождениях одинаковой цифры.

Код:
var ar1:Array = new Array (2, 3, 2)
var ar2:Array = new Array (4, 1)
var ar3:Array = new Array (5, 1, 2, 3)
var ar4:Array = new Array (4, 4, 5)
var ar5:Array = new Array (5, 1, 1, 1, 2);

for (i = 1; i <=5; i++){
	for (j = 0; j <= 5; j++){
		if (this["ar" + i][j] == 2){
			trace (i) // выводит 1, 3, 5
			break;
		}
	}
}

Старый 08.05.2007, 18:21
screamge вне форума Посмотреть профиль Отправить личное сообщение для screamge Посетить домашнюю страницу screamge Найти все сообщения от screamge
  № 6  
Ответить с цитированием
screamge
Ветеран форума
 
Аватар для screamge

Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
break всёже удобнее ещё одного условия
__________________
Free-lance | Twitter | Me

Старый 08.05.2007, 18:23
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 7  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Код:
var array:Array = [[], [2, 3, 2], [4, 1], [5, 1, 2, 3], [4, 4, 5], [5, 1, 1, 1, 2]];
for (var i:Number = 0; i < array.length; i++) {
	if (array[i].toString ().indexOf (2) >= 0) {
		trace (i);
	}
}
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 08.05.2007, 18:24
screamge вне форума Посмотреть профиль Отправить личное сообщение для screamge Посетить домашнюю страницу screamge Найти все сообщения от screamge
  № 8  
Ответить с цитированием
screamge
Ветеран форума
 
Аватар для screamge

Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
оптимальнее способ нашёлся, только вот с масивом хрен разберёшься что к чему))
__________________
Free-lance | Twitter | Me

Старый 08.05.2007, 18:25
BigDan вне форума Посмотреть профиль Отправить личное сообщение для BigDan Найти все сообщения от BigDan
  № 9  
Ответить с цитированием
BigDan
 
Аватар для BigDan

Регистрация: Apr 2006
Адрес: Kiev
Сообщений: 1,675
Отправить сообщение для BigDan с помощью ICQ
Код:
var arr:Array = new Array();
arr[0] = {id:1,numbers:[1,2,3]};
arr[1] = {id:2,numbers:[2,3,4]};
arr[2] = {id:3,numbers:[3,4,5]};
arr[3] = {id:4,numbers:[4,5,6]};
for(var i=0;i<=arr.length-1;i++){
 for(var j=0;j<=arr[i].numbers.length-1;j++){
  if(arr[i].numbers[j] == 2){
   trace(arr[i].id);
  }
 }
}
Этот вариант удобней.

Старый 08.05.2007, 18:26
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
А если в numbers будет по 100 цифр, вы все собираетесь их обходить?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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