[英]I want to get number of each team numbers in each day from jason array in jquery
I have a JSON array like this and I want to count each team numbers by day.我有一个这样的 JSON 数组,我想按天计算每个团队的编号。
const arrayVal = [{
"DATE": "2020-12-1",
"NAME": "JAKE",
"TEAM_NO": 2,
}, {
"DATE": "2020-12-1",
"NAME": "ANNA",
"TEAM_NO": 2,
}, {
"DATE": "2020-12-1",
"NAME": "JEFF",
"TEAM_NO": 1,
}, {
"DATE": "2020-12-1",
"NAME": "ERIKA",
"TEAM_NO": 2,
}, {
"DATE": "2020-12-1",
"NAME": "SUTTON",
"TEAM_NO": 3,
}, {
"DATE": "2020-12-1",
"NAME": "ARNOLD",
"TEAM_NO": 3,
}, {
"DATE": "2020-12-2",
"NAME": "JAKE",
"TEAM_NO": 4,
}, {
"DATE": "2020-12-2",
"NAME": "ANNA",
"TEAM_NO": 2,
}, {
"DATE": "2020-12-2",
"NAME": "JEFF",
"TEAM_NO": 1,
}, {
"DATE": "2020-12-2",
"NAME": "ERIKA",
"TEAM_NO": 3,
}, {
"DATE": "2020-12-2",
"NAME": "SUTTON",
"TEAM_NO": 5,
}, {
"DATE": "2020-12-2",
"NAME": "ARNOLD",
"TEAM_NO": 5,
}, {
"DATE": "2020-12-3",
"NAME": "JAKE",
"TEAM_NO": 1,
}, {
"DATE": "2020-12-3",
"NAME": "ANNA",
"TEAM_NO": 1,
}, {
"DATE": "2020-12-3",
"NAME": "JEFF",
"TEAM_NO": 1,
}, {
"DATE": "2020-12-3",
"NAME": "ERIKA",
"TEAM_NO": 2,
}, {
"DATE": "2020-12-3",
"NAME": "SUTTON",
"TEAM_NO": 3,
}, {
"DATE": "2020-12-3",
"NAME": "ARNOLD",
"TEAM_NO": 3,
}];
From above array I need something like this从上面的数组我需要这样的东西
{
"2020-12-1" : {
1: 2, // 2 entries with no 1 team
2: 3, // 3 entries with no 2 team
// ...
},
"2020-12-2" : {
// ...
}
}
So far I have below code lines which give me a json object. I need a help to get above result inside that object or as an array.到目前为止,我在下面的代码行中给出了 json object。我需要帮助才能在 object 中或作为数组获得上述结果。 Plesae suggest me if there is a better way to do this. Plesae 建议我是否有更好的方法来做到这一点。
TEAM_NO_COUNT = {}; // create an object
$.each(JSON.parse(JSON.stringify(arrayVal)), function (key, val) {
TEAM_NO_COUNT[val.DATE] = (TEAM_NO_COUNT[val.DATE] || 0);
});
alert(JSON.stringify(TEAM_NO_COUNT));
Please someone guide me how to do this?请有人指导我该怎么做?
This can be done with a fairly simple aggregation using reduce
:这可以通过使用reduce
的相当简单的聚合来完成:
var result = arrayVal.reduce( (acc,x) => {
if(!acc[x.DATE]) acc[x.DATE] = {}
if(!acc[x.DATE][x.TEAM_NO]) acc[x.DATE][x.TEAM_NO] = 0
acc[x.DATE][x.TEAM_NO]++
return acc;
}, {});
As you can see there is no need for如您所见,不需要
$.each
jQuery $.each
JSON.parse(JSON.stringify(arrayVal))
- the data is already a javascript array JSON.parse(JSON.stringify(arrayVal))
- 数据已经是一个 javascript 数组Live example below:现场示例如下:
const arrayVal = [{ "DATE": "2020-12-1", "NAME": "JAKE", "TEAM_NO": 2, }, { "DATE": "2020-12-1", "NAME": "ANNA", "TEAM_NO": 2, }, { "DATE": "2020-12-1", "NAME": "JEFF", "TEAM_NO": 1, }, { "DATE": "2020-12-1", "NAME": "ERIKA", "TEAM_NO": 2, }, { "DATE": "2020-12-1", "NAME": "SUTTON", "TEAM_NO": 3, }, { "DATE": "2020-12-1", "NAME": "ARNOLD", "TEAM_NO": 3, }, { "DATE": "2020-12-2", "NAME": "JAKE", "TEAM_NO": 4, }, { "DATE": "2020-12-2", "NAME": "ANNA", "TEAM_NO": 2, }, { "DATE": "2020-12-2", "NAME": "JEFF", "TEAM_NO": 1, }, { "DATE": "2020-12-2", "NAME": "ERIKA", "TEAM_NO": 3, }, { "DATE": "2020-12-2", "NAME": "SUTTON", "TEAM_NO": 5, }, { "DATE": "2020-12-2", "NAME": "ARNOLD", "TEAM_NO": 5, }, { "DATE": "2020-12-3", "NAME": "JAKE", "TEAM_NO": 1, }, { "DATE": "2020-12-3", "NAME": "ANNA", "TEAM_NO": 1, }, { "DATE": "2020-12-3", "NAME": "JEFF", "TEAM_NO": 1, }, { "DATE": "2020-12-3", "NAME": "ERIKA", "TEAM_NO": 2, }, { "DATE": "2020-12-3", "NAME": "SUTTON", "TEAM_NO": 3, }, { "DATE": "2020-12-3", "NAME": "ARNOLD", "TEAM_NO": 3, }]; var result = arrayVal.reduce( (acc,x) => { if(.acc[x.DATE]) acc[x.DATE] = {} if(.acc[x.DATE][x.TEAM_NO]) acc[x.DATE][x.TEAM_NO] = 0 acc[x;DATE][x,TEAM_NO]++ return acc. }, {}) console.log(result)
This can be easily achieved with vanilla javascript without the help of jQuery, see below这可以在没有 jQuery 帮助的情况下使用 vanilla javascript 轻松实现,见下文
const arrayVal=[{"DATE":"2020-12-1","NAME":"JAKE","TEAM_NO":2,},{"DATE":"2020-12-1","NAME":"ANNA","TEAM_NO":2,},{"DATE":"2020-12-1","NAME":"JEFF","TEAM_NO":1,},{"DATE":"2020-12-1","NAME":"ERIKA","TEAM_NO":2,},{"DATE":"2020-12-1","NAME":"SUTTON","TEAM_NO":3,},{"DATE":"2020-12-1","NAME":"ARNOLD","TEAM_NO":3,},{"DATE":"2020-12-2","NAME":"JAKE","TEAM_NO":4,},{"DATE":"2020-12-2","NAME":"ANNA","TEAM_NO":2,},{"DATE":"2020-12-2","NAME":"JEFF","TEAM_NO":1,},{"DATE":"2020-12-2","NAME":"ERIKA","TEAM_NO":3,},{"DATE":"2020-12-2","NAME":"SUTTON","TEAM_NO":5,},{"DATE":"2020-12-2","NAME":"ARNOLD","TEAM_NO":5,},{"DATE":"2020-12-3","NAME":"JAKE","TEAM_NO":1,},{"DATE":"2020-12-3","NAME":"ANNA","TEAM_NO":1,},{"DATE":"2020-12-3","NAME":"JEFF","TEAM_NO":1,},{"DATE":"2020-12-3","NAME":"ERIKA","TEAM_NO":2,},{"DATE":"2020-12-3","NAME":"SUTTON","TEAM_NO":3,},{"DATE":"2020-12-3","NAME":"ARNOLD","TEAM_NO":3,}]; const result = arrayVal.reduce((prev, {DATE, TEAM_NO}) => { prevCount = prev?.[DATE]?.[TEAM_NO] || 0 return {...prev, [DATE]: {...prev?.[DATE], [TEAM_NO]: prevCount + 1} }; }, {}) console.log(result)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.