Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пользовательский объект и хэш массив на него 
:(
    Опции темы
animad
Дата 12.1.2006, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 9.11.2004
Где: Рязань

Репутация: нет
Всего: нет



Замысел таков:

есть объект (сколь угодно большой): - привязка произведений к группам
Код

volume["docs2groups"]=[
{docId:29,groupId:0},
{docId:30,groupId:0},
{docId:31,groupId:0},
{docId:32,groupId:0},
{docId:33,groupId:3},
{docId:36,groupId:2},
{docId:29,groupId:2}
];


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

smile .... кто нибудь понял что я имел ввиду? ... если да, то плз. помогите.
PM MAIL WWW ICQ Skype GTalk Jabber YIM   Вверх
Sardar
Дата 12.1.2006, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(animad @ 11.1.2006, 23:37 Найти цитируемый пост)
кто нибудь понял что я имел ввиду?

Нет, мало что понятно... smile
Что тебе мешает сделать две хештаблицы с отображением ид->[група] и група->[ид], т.е. получаем списки. То что у тебя, это список обьектов, к тому же не сортированых по одному из полей, ищешь связь ты вероятно перебором...?


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
animad
Дата 12.1.2006, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 9.11.2004
Где: Рязань

Репутация: нет
Всего: нет



дело не в 2-х хэш..... а в том, что у docId и groupId не уникальны......

можно было бы построить многомерный массив, где первым содержался бы уникальный интекс docId, а вторым ставились бы groupId .... но становится не ясно... ведь у многомерн. мас. индексы не назначаются (на сколько я знаю) .. а следовательно придется их нагонять пустыми значениями..... а если у меня пятьсот docId и четыреста groupId ? ... вот эот массив. или лучше сделать функцию, которая при получении docId буде отдовать все groupId на него повешенные?
PM MAIL WWW ICQ Skype GTalk Jabber YIM   Вверх
Sardar
Дата 14.1.2006, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



animad во первых массивы и обьекты выполнены почти одинакого (хештаблицы), ну разве что в целях оптимизации для массивов (а это обьекты, наследованные от Object, следовательно и хештаблицы также) можно сделать отдельный контейнер как дерево для числовых индексов.

По твоей проблеме, лучше насоздавать две хештаблицы:

Код
var doc2group={
  //docId=>[gropuId+]
  '29':[0, 2],
  '30':0, //если всего одно значение, то ресурсы на массив не теряем
  '31':0
  //....
};

var group2doc={
  //groupId=>[docId+]
  '0':[29,30,31,32],
  '2':[29,36],
  '3':33 //аналогичная техника
};

function getGropus(doc) {
  return doc2group[String(doc)];
}

function inGroup(doc, group) {
  doc=String(doc); group=String(group);
  if(typeof(doc2group[doc])=='object' && doc2group[doc] instanceof Array) { //array
     //стрелять нетскейповцев и ECMA группу нужно за интерфейс к Array... =/
     //перебираем сами в ручную...
     for(var i=0; i<doc2group[doc].length && doc2group[doc][i]!=group; i++);
     return i<doc2group[doc].length;
  } else if(typeof(doc2group[doc])!='undefined') {//value
     return doc2group[doc]==group;
  } else return false;
}

alert(inGroup(29, 2)); //true
alert(inGroup(29, 3)); //false

И никакой магии smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0830 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.