![]() |
Как создать в объекте свойство с заранее неизвестным именем
Моя задача состоит в создании ассоциативного массива, в котором имя каждого ключа генерируется программой. В справочнике нашел у класса Object такой метод
Код AS3:
Код AS3:
Подскажите, как создать для объекта свойство с динамическим именем. Будут вопросы, зачем все это. Заранее пишу: 1. Я собираю ссылки с загруженных веб-страниц. 2. Для проверки уникальности ссылок я сохраняю их в массив. 3. Для ускорения алгоритма проверки (ссылок может быть много миллионов) я пробую сортировать массив или использовать ассоциативный массив. 4. Я хочу в ключи ассоциативного массива записывать ссылки, чтобы быстрый доступ к ним осуществлял сам язык. |
Может стоит использовать класс Dictionary?
Код AS3:
|
Код AS3:
|
Цитата:
Цитата:
Добавлено через 5 минут Цитата:
Спасибо! |
Цитата:
Код AS3:
|
Цитата:
Цитата:
Код AS3:
|
Цитата:
|
Судя по всему такое обращение к свойству obj[currentLink] перебирает все свойства объекта и не обеспечивает хорошей скорости работы скрипта. Значит сортировать будем.
|
Цитата:
Код AS3:
|
Цитата:
Представьте миллиард ссылок. Как быстро проверить на уникальность новой тысячи? Для каждой перебирать весь миллиард?.. Добавлено через 2 минуты Цитата:
Добавлено через 8 минут Немножко приврал. Вот моя проверка Код AS3:
|
Ваша проверка делает абсолютно то же самое.
Только утверждение там обратное. "Если такого свойства нет". И скорость гораааздо больше, чем вы пишете. И нет. Там не перебор. |
Цитата:
Код AS3:
|
На знаю как далеко зашли в оптимизации сортировки массивов, но те методы, которые я учил на уроках информатики в школьные годы не назовешь очень быстрыми... Короче, трудовой мозоль на пятой точке подсказывает мне, что плеер быстрее найдет свойство обьекта своими методами, чем вы будете его из-под палки заставлять сортировать ничем ему не интересный массив. Да и поиск свойства осуществляется максимум полным пребором все имеющихся свойств, а сортировку массива за один проход не сделаешь :(. Плюс поиск предполагает только операцию сравнения, а сортировка - кроме сравнения еще и присваивание значения.
|
Цитата:
|
Совсем не долго выполняет.
Видимо, ошибка где-то еще. Покажите ваш код. |
Цитата:
Говоря о сортировки я не имел в виду стандартных методов. У меня немножко другой подход со схожими алгоритмами. В программе появилась ссылка, ее нужно по алфавиту вставить в массив (не сортировать весь массив! он уже сортируется в процессе сбора ссылок). Чтобы найти место для ссылки в сортированном индексном массиве из 1 млрд элементов достаточно 40 итераций. Или, как я выше выяснил, всего 1 проверку в ассоциативном массиве. Чтобы собрать 1 млрд ссылок, нужно проводить проверки 115 суток...:wacko: Добавлено через 1 минуту Цитата:
Код AS3:
|
Цитата:
|
Ну вы же понимаете, наверное, что в приведенном вами коде indexOf и substring кушают раз в 100 больше времени, чем поиск свойства?
А с учетом количества их вызовов... Вот вам другой простенький тест. (хотя тут генерация ключа более-менее жручая) Код AS3:
|
SvetozarPNZ, запомните:
Цитата:
|
Понятно. Запомнил. Мне все равно нужно какие-то времязатратные действия производить. Буду смотреть, оптимизировать остальное.
|
SvetozarPNZ, мне кажется Вам не as3 нужен. Какие миллиард ссылок и ассоциативный массив:) Мне кажется, что плеер даже на миллионе ссылок, которые парсятся из какого-то файла ( xml или json с миллионом ссылок плеер не потянет ) + запихнуть это всё в массив... Что конкретно Вы хотите?
Добавлено через 4 минуты Если вы хотите, чтобы обрабатывалось все на клиенте, то сохраняйте ссылки на сервере, где они будут разбиваться на маленькие порции, во флеше определяйте, к какой порции относится ссылка и грузите этот кусок. Сюреализуйте json в объект и уже в нем ищите. Добавлено через 23 минуты Не знаю, что Вы подразумеваете под словами "записывать ссылки в качестве ключа", но есть способ, который переведет ссылки с типом String в тип int, даже можно ограничивать длину ключа. И помните, что ссылки бывают более чем 500 символов. |
| Часовой пояс GMT +4, время: 22:22. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.