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

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

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

Регистрация: Aug 2007
Сообщений: 168
По умолчанию Как создать зависимость между массивами?

Привет, это опять я.
На этот раз у меня такая трабла:
я хочу узнать как создать зависимость между массивами. Ну а если попроще, то смотрите:
есть у меня код, в котором 2 массива: первый содержит русские слова, второй - их английский перевод
как видно из кода, оба массива сортируються, но после сортировки индексы русских слов не соответствуют индексам английских.
Код:
var oneArray:Array = new Array("круг","квадрат","круто","красный","зеленый")
var twoArray:Array = new Array("circle","square","cool","red","green")
oneArray.sort();
twoArray.sort();
trace(oneArray)
trace(twoArray)
//зеленый,квадрат,красный,круг,круто
//circle,cool,green,red,square
//а нужно:
//зеленый,квадрат,красный,круг,круто
//green,square,red,circle,cool
Как сделать так, чтобы индексы элементов второго массива менялись согласно первому?

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

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
сведите в один массив объектов с полями, и используйте sortOn
__________________
4am is time to rock

Старый 11.11.2007, 16:10
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 3  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
как вариант, хранить переводы слов в виде свойств соответствующих элементов русского массива.

или делать второе поле для своеобразного ID и после сортировки русского массива, расставлять английский в этом же порядке.

Старый 11.11.2007, 16:43
2morrowMan вне форума Посмотреть профиль Отправить личное сообщение для 2morrowMan Найти все сообщения от 2morrowMan
  № 4  
Ответить с цитированием
2morrowMan
 
Аватар для 2morrowMan

Регистрация: Aug 2007
Сообщений: 467
Код:
var oneArray:Array = new Array("круг","квадрат","круто","красный","зеленый");
var twoArray:Array = new Array("circle","square","cool","red","green");
var thirdArray:Array = [];
for (var i:int = 0; i < oneArray.length; i++)
{
	thirdArray[oneArray[i]] = twoArray[i];
}
oneArray.sort();
for each(var word:String in oneArray)
{
	trace(word + ' - ' + thirdArray[word]);
}
Для подобного есть и еще можно придумать не один способ

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
2morrowMan, это раздел не по AS3, поэтому правте код.
Который к тому же с ошибкой.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
var a_arr:Array = ["zo","za","zaa","ya","Zia"];
var b_arr:Array = ["1","2","3","4","5"];
var foo_arr:Array = [];
//
a_arr.sort(sortABC);
b_arr.sort(sortPattern);
trace(a_arr);
trace(b_arr);
function sortABC(a,b):Number {
	var _a:Number = a.toLowerCase().charCodeAt(0);
	var _b:Number = b.toLowerCase().charCodeAt(0);
	var i:Number = 0;
	while(_a==_b){
		
		i++;
		var _a:Number = a.toLowerCase().charCodeAt(i);
		var _b:Number = b.toLowerCase().charCodeAt(i);
		if(i>=a.length){
			foo_arr.push(0);
			return 0;
		}
	}
	if(_a<_b){
		foo_arr.push(-1);
		return -1;
	} else {
		foo_arr.push(1);
		return 1;
	}
}
function sortPattern():Number {
	return isNaN(foo_arr[0]/1)? 0 : foo_arr.shift();
}
Ну, это общая задумка, нужно еще подумать, как бы оптимизировать.

upd:
Код:
Array.prototype.multySort = function(f:Function):Void {
	var i:Number = 0;
	while(i<this.length){
		if(f(this[i],this[i+1])==-1){
			var _a = this[i];
			var _b = this[i+1];
			this[i] = _b;
			this[i+1] = _a;
			var al:Number = arguments.length;
			while(al>1){
				var _a = arguments[al-1][i];
				var _b = arguments[al-1][i+1];
				arguments[al-1][i] = _b;
				arguments[al-1][i+1] = _a;
				al--;
			}
			i--;
		} else {
			i++;
		}
	}
	this.reverse();
	var al:Number = arguments.length;
	while(al>1){
		arguments[al-1].reverse();
		al--;
	}
}
//
var a_arr:Array = ["zo","za","под","ya","Zia"];
var b_arr:Array = ["1","2","3","4","5"];
//
a_arr.multySort(sortABC,b_arr);
//
trace(a_arr);
trace(b_arr);
function sortABC(a,b):Number {
	var _a:Number = a.toLowerCase().charCodeAt(0);
	var _b:Number = b.toLowerCase().charCodeAt(0);
	var i:Number = 0;
	while(_a==_b){
		
		i++;
		var _a:Number = a.toLowerCase().charCodeAt(i);
		var _b:Number = b.toLowerCase().charCodeAt(i);
		if(i>=a.length){
			return 0;
		}
	}
	if(_a<_b){
		return -1;
	} else {
		return 1;
	}
}
Ну, я знаю, что не стоит работать с прототипами, но, на мой взглайд, может быть полезная утилита =)
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 11.11.2007 в 20:10.
Старый 11.11.2007, 22:50
AlliAS вне форума Посмотреть профиль Отправить личное сообщение для AlliAS Найти все сообщения от AlliAS
  № 7  
Ответить с цитированием
AlliAS
 
Аватар для AlliAS

Регистрация: Aug 2007
Сообщений: 168
Ого какой здоровенный код на такую простую функцию. Что неужели нету спец методов сортировки одного массива на основании другого?

Но все равно большое спасибо


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

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

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


 


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


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