2014-11-16 9 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”(将其与单独打开工单时处理第一周的下一行进行比较)。

很可能,您应该在上周的第一周有类似的特殊情况。