Javascript 按月份和年份统计数组项
我收到多个包裹的json日期。日期通常表示创建特定地块的日期和时间。因此,根据该日期,我想统计每个月创建的包裹数量。我以前从未这样做过,我不确定stackoverflow的哪一个线程可以在这方面帮助我。我将非常感谢任何解释,以解决这个帮助或代码参考。 这是我的JSON结果示例Javascript 按月份和年份统计数组项,javascript,arrays,typescript,Javascript,Arrays,Typescript,我收到多个包裹的json日期。日期通常表示创建特定地块的日期和时间。因此,根据该日期,我想统计每个月创建的包裹数量。我以前从未这样做过,我不确定stackoverflow的哪一个线程可以在这方面帮助我。我将非常感谢任何解释,以解决这个帮助或代码参考。 这是我的JSON结果示例 [ { "createdAt": "2019-12-30T04:36:05.001Z" }, { "createdAt": "2019-12-06T08:58:23.030Z" }, {
[
{
"createdAt": "2019-12-30T04:36:05.001Z"
},
{
"createdAt": "2019-12-06T08:58:23.030Z"
},
{
"createdAt": "2020-01-08T19:00:21.873Z"
},
{
"createdAt": "2020-01-10T14:55:50.781Z"
},
{
"createdAt": "2019-12-21T13:05:09.983Z"
},
{
"createdAt": "2020-01-15T12:10:20.316Z"
},
{
"createdAt": "2020-01-14T06:47:36.078Z"
},
{
"createdAt": "2020-02-15-T06:47:36.078Z"
}
]
我正在与angular合作,因此我从我的服务中获取这些数据。所以现在我需要显示每月创建的包裹总数。您可以获取日期字符串的一部分作为键,并使用对象进行计数
var数据=[{createdAt:“2019-12-30T04:36:05.001Z”},{createdAt:“2019-12-06T08:58:23.030Z”},{createdAt:“2020-01-08T19:00:21.873Z”},{createdAt:“2020-01-10T14:55:50.781Z”},{“2020-02-15-T06:47:36.078Z”},
结果=数据.reduce((r,{createdAt})=>{
var key=createdAt.slice(0,7);
r[键]=(r[键]| 0)+1;
返回r;
}, {});
console.log(result);
您可以获取日期字符串的一部分作为键,并使用对象进行计数
var data=[{createdAt:“2019-12-30T04:36:05.001Z”},{createdAt:“2019-12-06T08:58:23.030Z”},{createdAt:“2020-01-08T19:00:21.873Z”},{createdAt:“2020-01-10T14:55:50.781Z”},{2020-02-15-T06:47:36.078Z“}”,
结果=数据.reduce((r,{createdAt})=>{
var key=createdAt.slice(0,7);
r[键]=(r[键]| 0)+1;
返回r;
}, {});
console.log(结果);
您可以使用它来汇总记录。
“2019-12-12-10-10-10-10-10-10-10-14-14 14:14:55:55:50.781Z“,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,02-15T06:47:36.078Z“}],
summary=src.reduce((res,{createdAt})=>{
const year=新日期(createdAt).getFullYear(),
月份=新日期(createdAt).getMonth()+1
res[`{year}-${month}`]=(res[`{year}-${month}`]|0)+1
返回res
}, {})
console.log(summary)可用于汇总记录。
“2019-12-12-10-10-10-10-10-10-10-14-14 14:14:55:55:50.781Z“,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,02-15T06:47:36.078Z“}],
summary=src.reduce((res,{createdAt})=>{
const year=新日期(createdAt).getFullYear(),
月份=新日期(createdAt).getMonth()+1
res[`{year}-${month}`]=(res[`{year}-${month}`]|0)+1
返回res
}, {})
console.log(摘要)你尝试过什么吗?@NinaScholz没有,因为我不确定从哪里开始。我甚至在数据中没有看到任何
包裹
。你期望得到什么结果?顺便说一句,是一个字符串。@NinaScholz我在通过服务点击api时过滤掉它们,因为我不需要包裹的详细信息,只需要创建日期在这些包裹中。你尝试过什么吗?@NinaScholz没有,因为我不知道从哪里开始。我甚至在数据中没有看到任何包裹。你期望得到什么结果?顺便说一句,是一个字符串。@NinaScholz我在通过服务点击api时过滤掉它们,因为我不需要包裹的详细信息,只需要创建这些包裹的日期。@ahsannissar:虽然这一个比它更快、更短,但您需要记住,这将适用于ISO格式的日期,因此,如果您有类似“2020年6月15日”的内容,您将需要一些更通用的解决方案。@yevgenGorbunkov您是对的,但我不会从后端获取任何其他格式的日期,因此没有其他原因w这一个对我来说很好。@ahsannissar:虽然这一个比ISO格式的日期更快、更短,但您需要记住,这将适用于ISO格式的日期,因此,如果您有类似“2020年6月15日”的内容,您将需要一些更通用的解决方案。@yevgenGorbunkov您是对的,但我不会从后端获取任何其他格式的日期,以便现在这段代码对我来说很好。我将保存这段代码以备将来使用。这是一个很好的使用不同格式的解决方案。我将保存这段代码以备将来使用。这是一个很好的使用不同格式的解决方案