Javascript 如何从对象数组返回上月值的总和

Javascript 如何从对象数组返回上月值的总和,javascript,reactjs,Javascript,Reactjs,我有一个50个对象的数组,具有value和ISOString日期格式 const totalIncome = [ {value: '5419.59', date: '2019-11-20T00:03:09.496Z'}, {value: '1242.41', date: '2019-12-08T03:08:30.016Z'}, {value: '3242.41', date: '2019-12-08T03:08:30.016Z'}, ... ]; 如

我有一个50个对象的数组,具有value和ISOString日期格式

const totalIncome = [ 
  {value: '5419.59',
   date: '2019-11-20T00:03:09.496Z'},
  {value: '1242.41',
   date: '2019-12-08T03:08:30.016Z'},
  {value: '3242.41',
   date: '2019-12-08T03:08:30.016Z'},
      ...
];
如何返回上个月的所有值(12月的所有值)的总和? 我想用香草JS做

var sum = lastMonthIncome.reduce((accVal, crntObj) => {
  if (crntObj.date.includes("2019-11")) {
    return accVal + crntObj.value;
  } else {
    return accVal;
  }
}, 0);
在这里,您可以根据您所需的月份更改包含内容(“2019-11”)。

  • 设定你关心的月份和年份
  • 将数组向下过滤到该月份和年份内的对象
  • 将数组减少到所有剩余
    值的总和

记住下面只是为了演示的目的,<代码>新日期< /代码>可能不总是按照预期的方式解析日期字符串,并且需要考虑时区。如果您有完整的ISO字符串,并考虑上个月尊重运行该脚本的设备的本地时区,那么它可能没问题。

const totalIncome=[{
值:“5419.59”,
日期:“2019-11-20T00:03:09.496Z”
},
{
值:“1242.41”,
日期:“2019-12-08T03:08:30.016Z”
},
{
值:“3242.41”,
日期:“2019-12-08T03:08:30.016Z”
},
];
const today=新日期();
让lastMonth=today.getMonth()-1;
让relevantYear=today.getYear();
如果(上个月==-1){
相关年份--;
上月=11;
}
const total=totalIncome.filter(i=>{
施工日期=新日期(即日期);
返回日期.getMonth()==上个月和日期.getYear()==相关年份;
}).reduce((上一个,当前)=>prev+parseFloat(当前值),0);

控制台日志(总计)您是否有momentjs?您所说的“上个月”是指过去30天内的值,还是指上个月的值,例如,如果您是在12月,则指11月起的所有值?这个问题在堆栈溢出时已被多次询问和回答。你在你的研究中找到了吗?我试过了,但没找到。。