2014-11-16 10 views
0

首先對不起,如果我發佈這個問題在一個錯誤的論壇上,我知道有幾種不同類型的問題。我的問題是如何實現問題的解決方案,而不是實際代碼本身的問題。需要審查我的解決方案。計算開放門票的平均天數

想象一下,您有一個支持系統,用戶可以在其中提交門票(很像一個託管系統)。門票可以有多個狀態,例如「提交/分配」等,直到它「關閉」。

現在假設您想要票據已打開的平均天數(即從其提交直到關閉爲止)。你一週一週都需要這些數字。你會如何解決這個問題?

我所做的就是等價於下面的僞代碼。

Pick out all tickets that have ever existed and are in any state = alltheticketsarray 
    for(var i =0; i<alltheticketsarray.length; i++){ 

    var weekarray = //determine which date that is smallest/largest and create an array containing all those weeks and weeks in between. Creating an empty object inside each index with the year-week as a key. 
    } 

    for(var i =0; i < alltheticketsarray.length; i++){ 
     var startdate = //picking out which date a ticket is submitted, converting it into a year-week number to know in which index in weekarray to start. 
    var stop = //getting the week number when the ticket is closed, if not avaliable stop=weekarray.length 

    for(var k =startdate; k < stop; k++){ 
    //add number of days the ticket has been open so far to weekarray, that is 
    number of days so far 
    add that number to weekarray[k].opendays += convertToDays(weekarray[k] - weekarray[startdate]) 
    if(weekarray[k]===weekarray[startdate]){ 
     use moment.js to get which day number (1-7) the submittet value is and add hat value to weekarray[k].opendays 
    } 
    weekarray[k].opentickets++; 
    } 
} 

然後拿到avarage天的門票已經開了,每星期我拿weekarray[k].opendays/weekarray[k].opentickets

請問這是怎麼也能解決這個問題?我問的原因是我不斷收到不合理的高價值,比如平均70天,我不確定這是否正確。

+0

首先要做的是在紙上創建一個示例並驗證它是否正確。如果你不知道結果是否正確,那麼我們也無法做到這一點。 –

回答

0

。在你的僞代碼,它說:

weekarray[k].opendays += convertToDays(weekarray[k] - weekarray[startdate]) 

這不可能是正確的錯誤,因爲,如果我理解正確的代碼中,convertToDays(...)式計算的天數從startdate到'k'周。但是,您應該在循環的這一點添加至多7個星期的「k」(將其與單獨打開工單時處理第一週的下一行進行比較)。

很可能,您應該在上週的第一週有類似的特殊情況。