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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.03.2015, 01:12
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
По умолчанию Сортировка подобных массивов

Привет всем. Такой вопрос, имеется обычный массив типа [1,2,8,7,3] и другой типа [g,f,n,t,k]
Мы сортируем первый массив как Array.NUMERIC - а второй должен отсортироваться аналогично ему, то есть

1,2,3,7,8 - g,f,k,t,n
Можно ли это сделать как то быстро, или все таки придется перебором самому?
__________________
Марк Tween

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Поможет?
Цитата:
Если указывается значение 8 или Array.RETURNINDEXEDARRAY для аргумента sortOptions параметра ...args, Flash возвращает отсортированный числовой массив индексов, отражающий результаты сортировки, и не модифицирует массив.
__________________
Reality.getBounds(this);

Старый 07.03.2015, 13:24
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Wolsh - нет не поможет, я читал про это. Суть приблизительно такая, приходжит жсон с сервера, и все время как попало то x1 : { data : { y8 : 20 ,... } , то x8 снчала - короче в разнабой. Я из этого всего делаю массивы, так надо. Один из массивов получается числовой и я могу его сортировать , а все другие - текстовые, вот и нужно отсориторовать индексы у них так же, как в числовом. Получается утилиту свою писать, верно понимаю?
__________________
Марк Tween

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

Регистрация: Jul 2008
Адрес: t:2, x: 0.76
Сообщений: 553
Отправить сообщение для mayakwd с помощью ICQ Отправить сообщение для mayakwd с помощью Skype™
Код AS3:
package {
	import flash.display.Sprite;
 
	/**
	 * @author Ilya Malanin (flashdeveloper[at]pastila.org)
	 */
	public class LinkedArraysSort extends Sprite {
		public function LinkedArraysSort() {
			var keys : Array = [1, 2, 8, 7, 3];
			var values : Array = ['g', 'f', 'n', 't', 'k'];
 
			testLinkedSort1(keys.concat(), values.concat());
			testLinkedSort2(keys.concat(), values.concat());
		}
 
		private function testLinkedSort1(keys : Array, values : Array) : void {
			var sortedIndexes : Array = keys.sort(Array.NUMERIC | Array.RETURNINDEXEDARRAY);
			remapValues(keys, sortedIndexes);
			remapValues(values, sortedIndexes);
 
			trace("Test 1\n---------------");
 
			trace("keys: " + keys);
			trace("values: " + values+'\n');
		}
 
		private function remapValues(values : Array, newIndexes : Array) : void {
			var result : Array = [];
 
			const length : int = newIndexes.length;
			for (var i : int = 0; i < length; i++) {
				result[i] = values[newIndexes[i]];
			}
 
			values.length = 0;
			values.splice(0, 0, result);
		}
 
		private function testLinkedSort2(keys : Array, values : Array) : void {
			trace("Test 2\n---------------");
 
			var merged : Array = [];
 
			const length : int = keys.length;
			for (var i : int = 0; i < length; i++) {
				merged.push({key: keys[i], value: values[i]});
			}
 
			merged.sortOn('key', Array.NUMERIC);
 
			for (i = 0; i < length; i++) {
				keys[i] = merged[i]['key'];
				values[i] = merged[i]['value'];
			}
 
			trace('keys: ' + keys);
			trace('values: ' + values);
		}
	}
}
__________________
Блог, Twitter
Брюзга.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
in4core, а может вовсе не надо месить все массивы? Может достаточно создать карту индексов и обращаться ко всем массивам через нее? Ну, то есть, создать отсортированный массив индексов и далее при обращении ко всем массивам использовать в качестве индекса значения из этого массива, а порядок в самих массивах не менять вообще.
__________________
Reality.getBounds(this);

Старый 07.03.2015, 17:05
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
mayakwd - круто, спасибо ))))
__________________
Марк Tween

Старый 09.03.2015, 16:44
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 7  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от in4core Посмотреть сообщение
Wolsh - нет не поможет, я читал про это. Суть приблизительно такая, приходжит жсон с сервера, и все время как попало то x1 : { data : { y8 : 20 ,... } , то x8 снчала - короче в разнабой. Я из этого всего делаю массивы, так надо. Один из массивов получается числовой и я могу его сортировать , а все другие - текстовые, вот и нужно отсориторовать индексы у них так же, как в числовом. Получается утилиту свою писать, верно понимаю?
Просто JSON с сервера не индексированный массив, в этом суть.
Как я понял, его не можете его перебрать последовательно, по индексам
Попросите сервер сделать его как положено. В JSON, по моему, есть такая возможность (Массив (одномерный)).
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 10.03.2015, 14:04
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 8  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Дима то есть, есть какие то методики, чтобы сделать индексированный жсон с пхп? Не поделишься?
Задача такая имея { a : {} , d : {} , x:{} , b: {} } получать всегда так { a:{} , b:{}, d:{} , x:{} }
__________________
Марк Tween

Старый 10.03.2015, 14:09
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 9  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Получили вы его в какой-то последовательности, но for..in чисто физически не сможет его перебрать именно в оригинальной последовательности. Он так работает. Все остальное - танцы с бубном. Проще всего сразу создавать индексированный массив.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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