想用jquery从json数组中计算每个团队每天的数量



我有一个这样的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,
          
    }];

我需要一个像这样的数组/对象

    {
        "DATE": "2020-12-1",
        "TEAM_NO": 3, 
        "TEAM_NO_COUNT": 2, // 2 entries with no 3 team
         
    }, {
        "DATE": "2020-12-1",
        "TEAM_NO": 1,
        "TEAM_NO_COUNT": 2,  // 2 entries with no 1 team
    }, {
        "DATE": "2020-12-2",
        "TEAM_NO": 4,
        "TEAM_NO_COUNT": 1,  
    }

我怎么能得到这样的结果使用任何juery/javascript方法(使用减少或任何东西)。请帮我一下。更简单的方法会更好。

可以使用reduce方法:

const result = arrayVal.reduce((a, c)=>{
    a[c.TEAM_NO] = a[c.TEAM_NO] 
        || {  DATE: c.DATE, TEAM_NO: c.TEAM_NO, TEAM_NO_COUNT: 0 };
    a[c.TEAM_NO].TEAM_NO_COUNT++;
    return a;
}, {})

正如mdn所说:

reduce()方法执行一个reducer函数(您提供的)数组的每个元素,产生单个输出值。

一个例子:

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((a, c)=>{
    a[c.TEAM_NO] = a[c.TEAM_NO] || {  DATE: c.DATE, TEAM_NO: c.TEAM_NO, TEAM_NO_COUNT: 0 };
    a[c.TEAM_NO].TEAM_NO_COUNT++;
    return a;
}, {})
console.log(result);

最新更新