簡體   English   中英

我想從 jquery 的 jason 數組中獲取每天每個團隊的編號

[英]I want to get number of each team numbers in each day from jason array in jquery

我有一個這樣的 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,
              
        }];

從上面的數組我需要這樣的東西

    {
      "2020-12-1" : {
        1: 2, // 2 entries with no 1 team
        2: 3, // 3 entries with no 2 team
        // ...
      },
      "2020-12-2" : {
        // ...
      }
    }

到目前為止,我在下面的代碼行中給出了 json object。我需要幫助才能在 object 中或作為數組獲得上述結果。 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));

請有人指導我該怎么做?

這可以通過使用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;
}, {});

如您所見,不需要

  • jQuery $.each
  • JSON.parse(JSON.stringify(arrayVal)) - 數據已經是一個 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, }]; 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)

這可以在沒有 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM