I have an array of orders with created_at and total fields, where created_at is the date the order was created and total is what the user paid.
Now I want to get the sum of the totals for four different date intervals, last 3 days, 7 days, 30 days and 90 days, how can I use moment to check if an order is between these intervals and get the total sum for each interval.
const getIntervalsSum = (orders) => { var threeDaysSum = 0; var sevenDaysSum = 0; var thirtyDaysSum = 0; var ninetyDaysSum = 0; for(var i=0; i<orders.length;i++) { //check interval with moment() here and add to respective sums } };
Advertisement
Answer
I think one generic function best suits this situation. Haven’t used moment before but based on the docs, this looks like it will work.
const totalOrders = (orders, daysAgo) => { let sum = 0; const then = moment().subtract(daysAgo, 'days'); orders.forEach((order) => { if (moment(order.created_at).isAfter(then)) { sum += order.total; } }); return sum; }