我有一个加载在 javascript 数组中的订单列表,我想根据日期总结这些数据。我想显示每天的总订单和每天的总金额。
通常我会在.Net 或存储过程中执行此操作。对于如何使用 javascript 来解决这个问题,有点难过。谁能指出我正确的方向。我对 Javascript 有很好的掌握,但从来没有处理过 JS 中的数据操作。
我有一个加载在 javascript 数组中的订单列表,我想根据日期总结这些数据。我想显示每天的总订单和每天的总金额。
通常我会在.Net 或存储过程中执行此操作。对于如何使用 javascript 来解决这个问题,有点难过。谁能指出我正确的方向。我对 Javascript 有很好的掌握,但从来没有处理过 JS 中的数据操作。
这是一项正在进行的工作:
var orders, groups;
orders = [
['order 1', 20, new Date(2012, 0, 1)],
['order 2', 20, new Date(2011, 0, 1)],
['order 3', 20, new Date(2010, 0, 1)],
['order 4', 20, new Date(2012, 0, 1, 10, 10, 10)]
];
groups = groupByDay(orders);
printSummary(groups);
// groups = {
// 1262300400000: [order 3]
// 1293836400000: [order 2]
// 1325372400000: [order 1, order 4]
// }
function groupByDay (orders) {
var i, d, l, groups;
groups = {};
l = orders.length;
for (i = 0; i < l; i++) {
d = orders[i][2]; // date of current record
d.setHours(0); // reset hours
d.setMinutes(0); // reset minutes
d.setSeconds(0); // reset seconds
d = d.getTime(); // turn the date into a timestamp (year, month, day)
if (!groups[d]) groups[d] = []; // use it as a group identifier
groups[d].push(orders[i]); // populate the group
}
return groups;
}
function printSummary (groups) {
var d, g, i, l, amount;
for (d in groups) {
g = groups[d];
l = g.length;
amount = 0;
for (i = 0; i < l; i++) {
amount += g[i][1];
}
document.write(
(new Date(+d)).toDateString() + ': ' + amount + '<br />'
);
}
}