Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.03.2010, 13:39
Интересующийся
Отправить личное сообщение для Wagner Посмотреть профиль Найти все сообщения от Wagner
 
Регистрация: 27.08.2009
Сообщений: 22

поиск элемента по критериям
итак, я получаю json объект со списком заданий. Укаждого задания есть его айди, текст, айди родительского задания (каждое задание может иметь подзадания)

необходимо выбрать все подзадания, принадлежащие некоторому подзаданию
Ответить с цитированием
  #2 (permalink)  
Старый 03.03.2010, 13:49
Аспирант
Отправить личное сообщение для sergdev Посмотреть профиль Найти все сообщения от sergdev
 
Регистрация: 08.12.2009
Сообщений: 32

перебор по jsonу (надеюсь, вы не сделали json вложенным ? в нем есть ограничение на вложенность), хитрый цикл
что то типа этого
var k = 0, child_tasks = [], looked_all = false;
while(true)
{
if (data[k].parentId = parentId)
{
child_tasks.push(k);
}
if (k == data.length) looked_all = true;
if (looked_all) break;
}
Ответить с цитированием
  #3 (permalink)  
Старый 03.03.2010, 13:50
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от sergdev
надеюсь, вы не сделали json вложенным ? в нем есть ограничение на вложенность
Что за ограничения?
Ответить с цитированием
  #4 (permalink)  
Старый 03.03.2010, 13:54
Интересующийся
Отправить личное сообщение для Wagner Посмотреть профиль Найти все сообщения от Wagner
 
Регистрация: 27.08.2009
Сообщений: 22

конечно-же не сделал. Циклом перебитать все элементы... Думал так сделать, но отказался, ибо долго. Элементов примерно 5к, а клиентские машины имеют камни 1.2 и мозгов 128мб. Может что-нибудь лучше есть?
Ответить с цитированием
  #5 (permalink)  
Старый 03.03.2010, 13:54
Аспирант
Отправить личное сообщение для sergdev Посмотреть профиль Найти все сообщения от sergdev
 
Регистрация: 08.12.2009
Сообщений: 32

Сообщение от Kolyaj Посмотреть сообщение
Что за ограничения?
Виноват, то у меня перепуталось с пхп
http://ua.php.net/json_decode
Цитата:
5.3.0 Added the optional depth . The default recursion depth was increased from 128 to 512
5.2.3 The nesting limit was increased from 20 to 128
Ответить с цитированием
  #6 (permalink)  
Старый 03.03.2010, 13:56
Аспирант
Отправить личное сообщение для sergdev Посмотреть профиль Найти все сообщения от sergdev
 
Регистрация: 08.12.2009
Сообщений: 32

Сообщение от Wagner Посмотреть сообщение
конечно-же не сделал. Циклом перебитать все элементы... Думал так сделать, но отказался, ибо долго. Элементов примерно 5к, а клиентские машины имеют камни 1.2 и мозгов 128мб. Может что-нибудь лучше есть?
Юзать deferred вычисления в джаваскрипте(если не важна скорость)(ссылку привести быстро не могу), либо делать запрос к серверу и возвращать айдишники тех элементов, которые нужны
Ответить с цитированием
  #7 (permalink)  
Старый 03.03.2010, 14:01
Интересующийся
Отправить личное сообщение для Wagner Посмотреть профиль Найти все сообщения от Wagner
 
Регистрация: 27.08.2009
Сообщений: 22

Сообщение от sergdev Посмотреть сообщение
Юзать deferred вычисления в джаваскрипте(если не важна скорость)(ссылку привести быстро не могу), либо делать запрос к серверу и возвращать айдишники тех элементов, которые нужны
запрос к серверу каждый раз - долго слишком. может можно в getelementbytagname указать критерий поиска?
Ответить с цитированием
  #8 (permalink)  
Старый 03.03.2010, 14:06
Аспирант
Отправить личное сообщение для sergdev Посмотреть профиль Найти все сообщения от sergdev
 
Регистрация: 08.12.2009
Сообщений: 32

думаете перебрать 5000 элементов будет быстрей ?
очень сомневаюсь
из двух зол выберите меньшее
1. нагрузка на сервер в случае запроса к серверу
2. тормознутость страницы в случае с вычислениями без запросов к серверу.
конечно как идея, изменить формат вашего джсона, вы же как то его формируете : Добавить туда поле типа - child_ids
или на вашей странице запустить деферред вычисление и для каждого id найти все childы( и "закешировать" их в джсе).
Ответить с цитированием
  #9 (permalink)  
Старый 03.03.2010, 14:10
Интересующийся
Отправить личное сообщение для Wagner Посмотреть профиль Найти все сообщения от Wagner
 
Регистрация: 27.08.2009
Сообщений: 22

у каждого объекта есть поле parent_id. От этого как-то можно оттолкнуться?
Ответить с цитированием
  #10 (permalink)  
Старый 03.03.2010, 14:13
Аспирант
Отправить личное сообщение для sergdev Посмотреть профиль Найти все сообщения от sergdev
 
Регистрация: 08.12.2009
Сообщений: 32

конечно, просто на сервере при формировании jsonа
каждому itemу присвойте еще одно поле child_ids : []
это будет массив с айдишниками детей.
как их вычислять ?
как пример
[{1:{
title:"dsad",
parent_id: 0,
child_ids : [2]
},
2: {
title: "dsadasdas",
parent_id:1
}
}]
упс видим что 2 - это ребенок 1 элемента добавляем в 1 след. поле
поняли ?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск элемента в IE !? Andrei Общие вопросы Javascript 3 20.11.2009 14:03
Поиск элемента по id coryphaeus Events/DOM/Window 16 17.11.2009 17:35
поиск элемента magavnuk Events/DOM/Window 10 14.07.2009 20:40
Поиск элемента по куску его Id gregOlsener Events/DOM/Window 1 25.08.2008 22:04
Поиск в массиве через JavaScript Noran Общие вопросы Javascript 0 10.08.2008 17:31