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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 28.06.2002, 20:32
  № 1  
andr_sky
Guest

Сообщений: n/a
По умолчанию удаление элемента из массива

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

т.е. есть массив ["a", "b", "c"]
надо удалить "c"

я тут сделал проц-ру простым перебором,
но если массив будет большой, то на её выполнение
потребуется какое то время, что неприемлимо совсем,
потому что я её буду часто использовать

Код:
function dfa(d) {
	l = _root.ej.length;
	r = 0;
	for (j=0; j<l; j++) {
		if (_root.ej[j-r] == d) {
			_root.ej.splice(j-r, 1);
			r++;
		}
	}
}
как можно сделать проще??

Старый 28.06.2002, 21:21
DeliMIter вне форума Посмотреть профиль Отправить личное сообщение для DeliMIter Найти все сообщения от DeliMIter
  № 2  
DeliMIter
некрофил
 
Аватар для DeliMIter

Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
Array.splice(elementIndex, 1);
__________________
...убивать людей не удовольствия ради, но для еды.

Старый 28.06.2002, 22:29
  № 3  
andr_sky
Guest

Сообщений: n/a
Цитата:
Оригинал написал(а) DeliMIter
Array.splice(elementIndex, 1);
я вроеде писал что неизвестен порядковый номер
элемента, который нужно удалить....
известен лишь сам этот элемент......

так что?
никак кроме как так ?



(в первом сообщении, где CODE дан,
удаление производится из массива _root.ej
... это если кто не понял)


Последний раз редактировалось andr_sky; 28.06.2002 в 22:32.
Старый 28.06.2002, 22:44
DeliMIter вне форума Посмотреть профиль Отправить личное сообщение для DeliMIter Найти все сообщения от DeliMIter
  № 4  
DeliMIter
некрофил
 
Аватар для DeliMIter

Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
Код:
for (var i=Array.length-1; i>=0; i--)
 if (Array[i] == something)
  Array.splice(i, 1);
__________________
...убивать людей не удовольствия ради, но для еды.

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

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

Старый 29.06.2002, 20:11
  № 6  
andr_sky
Guest

Сообщений: n/a
не будет ли так любезен Nox Noctis объяснить
что ж это за хрень такая "хэш" .....

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

Регистрация: Aug 2001
Сообщений: 4,121
во флэше хеш - это самая банальная вещь ты сам им постоянно пользуешься когда проги на АС пишешь
когда ты делаешь обращение вроде: this["something"] - это как раз и есть обращение к ассоциативному массиву, где имена всех методов и пропертей являются ключами.

так я к чему все это -
ты можешь переписать массив задом наперед ?
есть у тебя, скажем, массив вроде:
a = [10,20,30,40];
а ты его перепишешь как
a = [];
a["i10"] = ...;
// в качестве значения такого элемента поставишь то, что тебе нужно...
// а если не нужно можно просто true поставить например
a["i20"] = ...;
a["i30"] = ...;
a["i40"] = ...;
вообще, это не будет отличаться от работы с объектами
хочешь удалить элемент со значением N - пишешь
delete a["i"+N];
...это например

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

короче тебе надо понять что тебе больше нужно:
моментально находить элемент по его значению, или по его порядковому номеру в массиве.


Последний раз редактировалось Nox Noctis; 29.06.2002 в 20:56.
Старый 01.07.2002, 09:52
  № 8  
andr_sky
Guest

Сообщений: n/a
однако эта штука "хэш" очень полезная.
только вот почему она так называется....

но всё равно мне хэш этот не поможет,
элементы массива совершенно разные типа
"е1", "е2", "е_1", "е3", "mе_1" и тп....
а мне их ещё надо всех перебирать по прядку для проверки всяких там штук....

так что надо обычный Array использовать....

Старый 01.07.2002, 19:29
Fisher вне форума Посмотреть профиль Отправить личное сообщение для Fisher Найти все сообщения от Fisher
  № 9  
Fisher

Регистрация: Oct 2000
Адрес: Ukraine Lugansk
Сообщений: 852
Отправить сообщение для Fisher с помощью ICQ
А эти твои элементы не имена мувов часом? Та мож в масиве не имена хранить а сами объекты(тобиш ссылки)? Короче не мудри - если хочешь чтоб помогли - объясняй всю задачу. Но без перебора я думаю врядли обойтись. Не хочешь лишней работы - поставь при выполнении условия ретурн

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

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

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

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

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

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


 


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


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