У меня есть многомерный массив (закодированный в json, так что это правильная терминология?)
{"tasks":[{"task":"first parent task", "sub-tasks":[{"sub-task":"first sub task", "startTime":0, "endTime":30}, {"sub-task":"second sub task", "startTime":65, "endTime":90}]},
{"task":"second parent task", "sub-tasks":[{"sub-task":"task 2 sub task 1", "startTime":35, "endTime":45},{"sub-task":"task 2 sub task 2", "startTime":95, "endTime":100}]}]}
У меня есть некоторый javascript для получения текущей подзадачи, и я пытаюсь получить следующую подзадачу по времени запуска, но по некоторым причинам я получаю только следующую подзадачу в той же родительской задаче.
Итак, я ищу вывод, который будет
first parent task - first sub task -> nextTask = second parent task - task 2 sub task 1 -> nextTask = first parent task -> second sub task -> nextTask = second parent task - task 2 sub task 2
вот код, который у меня есть на данный момент, но он дает мне только подзадачи из одного массива.
for(var r=0;r<tasks.length;r++){
for (var i = 0; i<tasks[r].sub-tasks.length){
if(tasks[r].sub-tasks[i].startTime==currenttimer){
showTask(tasks[r].sub-tasks[i], tasks);
}
}
}
function showTask(current, tasks){
jQuery('div#currentTask').text(current.sub-task);
var nextStep = current+200; // just to set the next beyond the length of all tasks
for (var nt=0; nt<tasks.length; nt++){
for (var nst=0; nst<tasks[nt].sub-tasks.length; nt++){
if(tasks[nt].sub-tasks[nst].startTime<nextStep
&& tasks[nt].sub-tasks[nst].startTime>current.startTime){
jQuery('div#nextTask').text(tasks[nt].sub-tasks[nst].sub-task);
}
}
}
}
Этот код возвращает только первые родительские задачи, но я не уверен, почему. Есть ли лучший способ сделать это?
Первоначальный оператор for (var r ... выполняется внутри другого цикла рисования на холсте, поэтому я запускаю циклы таким образом, чтобы не обновлять DOM каждую секунду или более.
Я бы предпочел не помещать startTime в отдельный массив или что-то в этом роде, поскольку мне нужно было бы взять этот массив и в любом случае ссылаться на исходный json, и это просто кажется пустой тратой.