【问题标题】:getting next lowest value from multidimensional array从多维数组中获取下一个最小值
【发布时间】:2010-12-11 00:44:36
【问题描述】:

我有一个多维数组(json 编码,所以这仍然是正确的术语吗?)

{“任务”:[{“任务”:“第一个父任务”,“子任务”:[{“子任务”:“第一个子任务”,“开始时间”:0,“结束时间”:30}, {"sub-task":"第二个子任务", "startTime":65, "endTime":90}]}, {"task":"第二个父任务", "sub-tasks":[{"sub-task":"task 2 子任务 1", "startTime":35, "endTime":45},{"sub-任务":"任务 2 子任务 2", "startTime":95, "endTime":100}]}]}

我有一些 javascript 来获取当前的子任务,我试图在 starttime 之前获取下一个子任务,但由于某种原因,我只能在同一个父任务中获取下一个子任务。 所以我正在寻找的输出是

第一个父任务 - 第一个子任务 -> nextTask = 第二个父任务 - 任务 2 子任务 1 -> nextTask = 第一个父任务 -> 第二个子任务 -> nextTask = 第二个父任务 - 任务 2 子任务 2

这是我目前拥有的代码,但它只给了我来自同一个数组的子任务。

for(var r=0;rcurrent.startTime){ jQuery('div#nextTask').text(tasks[nt].sub-tasks[nst].sub-task); } } } }

该代码仅返回第一个父任务子任务,但我不确定为什么。有没有更好的方法来做到这一点?

最初的 for(var r... 语句在画布上绘制的另一个循环中运行,因此我以这种方式运行循环以防止每秒或更长时间更新 DOM。

我不希望将 startTime 放入单独的数组或类似的东西中,因为无论如何我都需要获取该数组并引用原始 json,这似乎是一种浪费。

【问题讨论】:

    标签: javascript json multidimensional-array


    【解决方案1】:

    您基本上是在找到符合您测试条件的第一个节点。您需要找到大于当前步骤的最低值,因此您应该更新nextStep,存储ntnst,然后在循环外运行您的命令。像这样:

    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
     var ntNext, nstNext;
     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){
                  nextStep = tasks[nt].sub-tasks[nst].startTime;
                  ntNext   = nt;
                  nstNext  = nst;
             }
          }
     } 
     jQuery('div#nextTask').text(tasks[ntNext].sub-tasks[nstNext].sub-task);
    }
    

    请注意,如果两个开始时间相同,它将返回它找到的第一个具有该开始时间的任务。

    【讨论】:

    • 抱歉,延迟回到这个 mVChr,一直在算法地狱。
    猜你喜欢
    • 2017-12-25
    • 2016-02-27
    • 2014-05-22
    • 1970-01-01
    • 2021-12-03
    • 2017-11-03
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多