|
03.03.2010, 13:39
|
Интересующийся
|
|
Регистрация: 27.08.2009
Сообщений: 22
|
|
поиск элемента по критериям
итак, я получаю json объект со списком заданий. Укаждого задания есть его айди, текст, айди родительского задания (каждое задание может иметь подзадания)
необходимо выбрать все подзадания, принадлежащие некоторому подзаданию
|
|
03.03.2010, 13:49
|
Аспирант
|
|
Регистрация: 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;
}
|
|
03.03.2010, 13:50
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от sergdev
|
надеюсь, вы не сделали json вложенным ? в нем есть ограничение на вложенность
|
Что за ограничения?
|
|
03.03.2010, 13:54
|
Интересующийся
|
|
Регистрация: 27.08.2009
Сообщений: 22
|
|
конечно-же не сделал. Циклом перебитать все элементы... Думал так сделать, но отказался, ибо долго. Элементов примерно 5к, а клиентские машины имеют камни 1.2 и мозгов 128мб. Может что-нибудь лучше есть?
|
|
03.03.2010, 13:54
|
Аспирант
|
|
Регистрация: 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
|
|
|
03.03.2010, 13:56
|
Аспирант
|
|
Регистрация: 08.12.2009
Сообщений: 32
|
|
Сообщение от Wagner
|
конечно-же не сделал. Циклом перебитать все элементы... Думал так сделать, но отказался, ибо долго. Элементов примерно 5к, а клиентские машины имеют камни 1.2 и мозгов 128мб. Может что-нибудь лучше есть?
|
Юзать deferred вычисления в джаваскрипте(если не важна скорость)(ссылку привести быстро не могу), либо делать запрос к серверу и возвращать айдишники тех элементов, которые нужны
|
|
03.03.2010, 14:01
|
Интересующийся
|
|
Регистрация: 27.08.2009
Сообщений: 22
|
|
Сообщение от sergdev
|
Юзать deferred вычисления в джаваскрипте(если не важна скорость)(ссылку привести быстро не могу), либо делать запрос к серверу и возвращать айдишники тех элементов, которые нужны
|
запрос к серверу каждый раз - долго слишком. может можно в getelementbytagname указать критерий поиска?
|
|
03.03.2010, 14:06
|
Аспирант
|
|
Регистрация: 08.12.2009
Сообщений: 32
|
|
думаете перебрать 5000 элементов будет быстрей ?
очень сомневаюсь
из двух зол выберите меньшее
1. нагрузка на сервер в случае запроса к серверу
2. тормознутость страницы в случае с вычислениями без запросов к серверу.
конечно как идея, изменить формат вашего джсона, вы же как то его формируете : Добавить туда поле типа - child_ids
или на вашей странице запустить деферред вычисление и для каждого id найти все childы( и "закешировать" их в джсе).
|
|
03.03.2010, 14:10
|
Интересующийся
|
|
Регистрация: 27.08.2009
Сообщений: 22
|
|
у каждого объекта есть поле parent_id. От этого как-то можно оттолкнуться?
|
|
03.03.2010, 14:13
|
Аспирант
|
|
Регистрация: 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 след. поле
поняли ?
|
|
|
|