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/

4

1 回答 1

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/

于 2012-04-22T18:29:39.757 回答