帐户中的负数

时间:2012-04-22 17:58:08

标签: javascript algorithm

我有一个人们可以销售产品的网站。每次他们添加产品,他们必须支付我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/

1 个答案:

答案 0 :(得分: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/