2012-04-22 49 views
3

我有一個網站,人們可以銷售產品。每次他們添加產品時,他們都必須支付10美分。每個用戶都有一些可以與銀行賬戶進行比較的東西。所以當他們添加產品時,他們的賬戶就會變成-10美分。每個用戶只能有x天的負數帳戶。帳戶中的負面日子

所以我需要一個算法,可以計算一個帳戶有多少天是負面的。

的數據是這樣的:

var data = [ 
    { amount: -10, ago: 15 }, 
    { amount: 10, ago: 10 }, 
    { amount: -10, ago: 5 } 
]; 

所以這個賬戶一直爲負5天。 (在我的應用程序我使用日期,但爲了簡單起見,我使用「日前」在這裏。)

的其他例子:

var data = [ 
    { amount: -10, ago: 15 }, 
    { amount: -10, ago: 10 }, 
    { amount: -10, ago: 5 } 
]; 

該帳戶已被負15天。

我已經自己解決了這個問題,但也許有一個更優雅的解決方案?

我解決了這個問題:http://jsfiddle.net/SK2By/1/

空的模板來測試你的算法:http://jsfiddle.net/SK2By/

+3

如果你有一個工作解決方案,如果建議在http://codereview.stackexchange.com而不是在這裏尋求改進。 – 2012-04-22 18:04:27

+1

Upvote用於模板失敗的測試用例。大勝。 – Hamish 2012-04-22 18:04:29

+1

雖然,爲什麼'solution3'15?如果帳戶在5天前正面? – Hamish 2012-04-22 18:06:00

回答

2

這是需要考慮的另一個辦法:

var negativeDays = function (data) { 

    var i, balance = 0, daysNegative = 0; 

    for (i = 0; i < data.length; i++) { 
     balance += data[i].amount; 

     if (balance < 0) { 
      if (daysNegative === 0) { 
       daysNegative = data[i].ago; 
      } 
     } else { 
      daysNegative = 0; 
     } 
    } 

    return daysNegative; 
}; 

的jsfiddle:http://jsfiddle.net/willslab/SK2By/7/

+0

哇,非常好,比我的複雜得多。 – Pickels 2012-04-22 19:43:16

+0

不客氣!如果你同意,你會接受答案嗎?當然,如果別人有更好的東西,你可以隨時改變接受的答案。我也有興趣看到別的東西。 – 2012-04-22 21:02:51

相關問題