reactjs 如何根据创建日期从react中的对象获取总值

elcex8rz  于 2022-12-22  发布在  React
关注(0)|答案(2)|浏览(106)

我需要根据created_at日期获得item_subtotal_amount的总和。

const test = {
"id": 1414,
"integration_id": null,
"business_upstream_identifier": null,
"alternate_business_id": null,
"status": {
    "type": "ordered",
    "name": "Ordered"
},
"payment_term": null,
"payment_status_id": null,
"payment_status": null,
"payment_status_note": null,
"item_subtotal_amount": 3795,
"rounding_amount": 0,
"total_amount": 3795,
"created_at": "2022-12-19T23:02:25+00:00",}

这里有一个类似的对象列表,但创建日期不同。2我需要得到一个特定日期的item_subtotal_amount的总和。3(created_at)
我就是这么试的。

let newTotal = 0
    test?.forEach((stat) => {
       newTotal += stat.item_subtotal_amount;
    });

但是这个方法并没有像预期的那样工作,因为这是一个我无法循环的对象。有没有其他合适的方法我可以用来实现我的目标?

uhry853o

uhry853o1#

下面的代码片段解决了你的问题。我假设你只想添加一个测试的小计,如果它匹配一个给定的日期,而不管它是在所说的日期的什么时间创建的。

let testArray = [
  {"item_subtotal_amount": 100, "created_at": "2022-12-19T23:02:25+00:00"},
  {"item_subtotal_amount": 100, "created_at": "2021-11-20T23:11:52+00:00"},
  {"item_subtotal_amount": 100, "created_at": "2002-11-12T23:14:34+00:00"},
  {"item_subtotal_amount": 100, "created_at": "2022-12-19T23:32:53+00:00"},
  {"item_subtotal_amount": 100, "created_at": "2022-12-19T23:02:25+00:00"},
];

//I'm assuming that you want the date only and not the time
let chosenDate = "2022-12-19";
let sum = 0;

testArray.forEach((test) => {
  if (test.created_at.substring(0, 10) == chosenDate) {
    sum += test.item_subtotal_amount;
  }
});

console.log(sum);
sy5wg1nm

sy5wg1nm2#

这个方法对我计算总数很有效。

const totalPerDay = Object.values(transactionList?.data.reduce((resMap, obj) => {
  const date = new Date(obj.created_at).toLocaleString().split(',')[0]

  if (resMap[date] !== undefined)
    resMap[date] += obj.item_subtotal_amount
  else
    resMap[date] = obj.item_subtotal_amount

  return resMap;
}, {}))

reduce()-从左到右对每个值执行给定的函数。
reduce()-不改变原始数组。
方法的作用是:返回给定对象自己的可枚举字符串键属性值的数组。

相关问题