繁体   English   中英

根据月份过滤对象列表?

[英]Filter list of Objects according to the month?

我正在使用图表,所以每当我选择根据月份显示数据时,我都必须显示每个月的数据,我有诸如 totalAmount、paidAmount 之类的字段,我应该汇总该月的数据。

const myArray = [
  {
    "id": 9,
    "userId": null,
    "invoiceNumber": "biscuitInvoice",
    "billedBy": 1,
    "billedTo": 2,
    "addGst": false,
    "invoiceDate": "2021-05-08T12:05:00",
    "dueDate": "2021-05-21T12:03:00",
    "totalAmount": 11.8,
    "discountSymbol": null,
    "discountPercent": null,
    "subTotal": null,
    "notes": null,
    "signature": null,
    "reachMail": "",
    "reachPhoneNo": null,
    "businessLogo": null,
    "clientName": "Checking Business",
    "businessName": "Chocolate Business",
    "paymentAmount": 140,
    "status": "Created",
    "igst": 1.8,
    "cgst": 0,
    "amount": null,
    "sgst": 0,
    "businessClient": null,
    "businessProfile": null,
    "invoiceAttachments": [],
    "invoiceItems": [],
    "invoiceTerms": []
  },
  {
    "id": 8,
    "userId": null,
    "invoiceNumber": "invq32",
    "billedBy": 1,
    "billedTo": 3,
    "addGst": false,
    "invoiceDate": "2021-04-04T10:10:22",
    "dueDate": "2021-05-13T10:10:00",
    "totalAmount": 354,
    "discountSymbol": null,
    "discountPercent": null,
    "subTotal": null,
    "notes": null,
    "signature": null,
    "reachMail": "",
    "reachPhoneNo": null,
    "businessLogo": null,
    "clientName": "Checking",
    "businessName": "Chocolate Business",
    "paymentAmount": 120,
    "status": "Paid",
    "igst": 54,
    "cgst": 0,
    "amount": null,
    "sgst": 0,
    "businessClient": null,
    "businessProfile": null,
    "invoiceAttachments": [],
    "invoiceItems": [],
    "invoiceTerms": []
  }
]

在那个列表中,我有 invoiceDate,一个 object 是 4 月,另一个是 5 月。

点击这里我的意思是什么,我想要这个功能

我该怎么做,有什么帮助吗?

这是您需要的 function:

function getDesiredMonth(data, month) {
    return data.filter((item) => item.invoiceDate.split("-")[1] === month)
}

例如,您可以这样调用它来获取 5 月的发票: getDesiredMonth(myArray, '05')

让我知道这是否适合你:)

回答是因为我没有足够的代表发表评论。

我想您可以按照以下步骤操作:

  1. 将您需要的聚合变量(基本上是 sgst 或其他的总和)初始化为 0。
  2. 遍历列表
  3. 使用诸如 luxon 或 moment 之类的库来解析发票日期(它们在 ISO 中,所以很简单)
  4. 从解析的 object 中识别月份数。
  5. 将您需要的任何数据聚合到之前初始化的变量中(例如total_sgst += current_obj.sgst
  6. ???
  7. 利润?
function filterDataByMonth(data, month){
    return data.filter(i => new Date(i.invoiceDate).getMonth() + 1 === month);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM