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

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

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

Регистрация: Nov 2014
Адрес: Харьков
Сообщений: 14
По умолчанию запутался с индексом массивов

Доброго времени суток пишу метод класса, который должен возвращать случайный индекс. Точнее хочу написать только малость запутался буду рад любой помощи заранее спасибо
Код AS3:
package alibrary{
 
	/**
	 * ...
	 * @author rambler
	 */
	public class ArrayAdvanced  {
 
		private static var endIndexArray:Array = [-1];
 
		public function ArrayAdvanced() {
 
 
		}
 
 
	internal function searchArray(theArray:Array, searchElement:Object):int 
	{
		// Проверять каждый элемент, чтобы определить, совпадает ли
		// его значение со значением параметра searchElement
		for (var i:int = 0; i < theArray.length; i++) {
 
			if (theArray[i] == searchElement) 
			{
				return i;
			}
		}
		return -1;
	}
	internal function randomIndexArray(theArray:Array):Array// Проблемный код
	{
		for (var i:int = 0; i < theArray.length; i++)// Обходим массив
		{
			if (theArray[i] == endIndexArray)// Если массив кончился, вернуть случайный индекс
			{
				var randomArray:Array = theArray[Math.floor(Math.random() * i)];
				return randomArray;
			}
 
		}
		return [i];
	}
 
	}
}

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

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Зачем здесь цикл? Можно написать просто:
Код AS3:
internal function randomIndexArray(theArray:Array):Array// Проблемный код
{
	return Math.round(Math.random() * (theArray.length - 1));
}

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

Регистрация: Nov 2014
Адрес: Харьков
Сообщений: 14
да цикл был лишним. немножко скорректировал. спасибо за подсказку совсем упустил .length
Код AS3:
internal function randomIndexArray(theArray:Array):Number
	{
 
	return Math.round(Math.random() * (theArray.length - 1));
 
	}

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

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
round тут лишний.
Нужно просто:
Код AS3:
internal function randomIndexArray(theArray:Array):int
{
	return Math.random() * theArray.length;
}
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.

Старый 09.12.2014, 09:32
neonoviiwolf вне форума Посмотреть профиль Отправить личное сообщение для neonoviiwolf Найти все сообщения от neonoviiwolf
  № 5  
Ответить с цитированием
neonoviiwolf

Регистрация: Jun 2014
Сообщений: 558
ChuwY ага, ищем в массиве элемент с индексом 1,2456.

Добавлено через 2 минуты
TWETTI просто вопрос, а последний элемент когда нибудь сможет выпасть? может вместо "-1" написать "-0,99"?

Старый 09.12.2014, 10:30
ObOs вне форума Посмотреть профиль Отправить личное сообщение для ObOs Найти все сообщения от ObOs
  № 6  
Ответить с цитированием
ObOs
 
Аватар для ObOs

Регистрация: Jul 2009
Сообщений: 149
Цитата:
Сообщение от neonoviiwolf Посмотреть сообщение
ChuwY ага, ищем в массиве элемент с индексом 1,2456.
Посмотрите внимательней на тип данных который возвращает метод.

Старый 09.12.2014, 10:33
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 7  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
Цитата:
ага, ищем в массиве элемент с индексом 1,2456.
ага, у нас int с плавающей запятой?


round тут не просто лишний, он левый. тут нужен floor
a[Math.floor(Math.random() * a.length)]

зачем вообще писать целый метод для этого? индусостайл getArrayIndex1(theArray:Array):int{return 1};

a[Math.random() * a.length | 0]

> searchArray
ну есть же indexOf

Старый 09.12.2014, 10:41
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 8  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Конвертация в int и так сработает как Math.floor(), пусть даже она не явная.
__________________
тут я

Старый 09.12.2014, 10:53
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 9  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
Цитата:
Конвертация в int и так сработает как Math.floor(), пусть даже она не явная.
это к чему?
надо же показать контекст, а то я могу написать ["asd"][0.5] // undefined
где конвертация?

Старый 09.12.2014, 11:04
rambler вне форума Посмотреть профиль Отправить личное сообщение для rambler Найти все сообщения от rambler
  № 10  
Ответить с цитированием
rambler
 
Аватар для rambler

Регистрация: Nov 2014
Адрес: Харьков
Сообщений: 14
спасибо за подсказку nubideus (indexOf)

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

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

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


 


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


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