【问题标题】:Concatenate and aggregate json response data with node.js使用 node.js 连接和聚合 json 响应数据
【发布时间】:2020-04-11 17:35:42
【问题描述】:

我尝试了不同的方法,谁能解释我错在哪里?

我想根据各自的团队聚合团队成员。我尝试了下面表示的代码,但无法获得正确的值。 我认为在获取值时变量存在一些问题,但我只是不理解代码。谁能解释一下?

以下是我的代码:“数据”是查询后返回的对象。

      var groups = []
      var Members = []

      for (var i = 0; i < data.length; i++) {

          var team = data[i].UnitId.BlockName;
          var member = { "Name" : data[i].Name, "Mobile" : data[i].Mobile }
          Members.push(member);
          console.log('Members are: '+JSON.stringify(Members));
          //if(data[i].UnitId.BlockName === team){
            var new_obj = { "Team" : team, Members};
            groups.push(new_obj);
          // }
      }

      console.log('Groups: '+JSON.stringify(groups));
      //------------------------------------

      let grouped = {};
      groups.forEach(({Team, Members}) => {
        grouped[Team] = grouped[Team] || {Team, Members: []};
        if (grouped[Team].Members.includes(Members.Name,Members.Mobile))
          grouped[Team].Members.push(Members.Name,Members.Mobile);
        // grouped[id].medal_count = `${(+grouped[id].medal_count)+ (+medal_count)}`;
      });
      grouped = Object.values(grouped);

      console.log(JSON.stringify(grouped)); 

输出:

{
    "grouped": [
        {
            "Team": "EasilyDone",
            "Members": []
        },
        {
            "Team": "BrainItOn",
            "Members": []
        }
    ]
}

期望的输出:

{
    "grouped": [
        {
            "Team": "EasilyDone",
            "Members": 
                     [
                         {
                                "Name" : "Dhairya"
                         }
                     ]
        },
        {
            "Team": "BrainItOn",
            "Members":
                     [
                         {
                                "Name" : "raj"
                         }
                     ]
        }
    ]
}

DATA LOOKS LIKE THIS

【问题讨论】:

  • 您可以发布您正在循环播放的data 吗??
  • @Subburaj 是的!我已附上链接。
  • 粘贴有问题的,也不要给图片链接。如果它粘贴为有问题的文本意味着我们很容易处理它。

标签: javascript node.js concatenation aggregation


【解决方案1】:

我想你想做的是:

let grouped = {};

groups.forEach(({Team, Members}) => {
  grouped[Team] = { Team, Members };
});

另外,您的代码非常复杂。我建议你学习如何以更简洁的方式编写 Javascript。

【讨论】:

  • 我的名字变成了空值。您能提出任何解决方案吗?
  • 你到底是什么意思?这是来自您的数据数组吗?
  • 从数据中我创建了一个“组”json对象数据。现在,我不想更改“组”对象的格式。
  • 格式应如所需输出所示。我已附上我的数据图像的链接,仅供参考。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 2015-06-24
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多