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