在Javascript中对嵌套数组进行分组 [英] Group nested array in Javascript

查看:101
本文介绍了在Javascript中对嵌套数组进行分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个用于可视化的数据数组,格式如下:

I have an array of data that is being used for some visualisation and is in the below format

var Dataset1 =  [
      {
        "commentBy" : "saurabh",
        "comment" : "Testing",
        "datestamp" : "07/07/2017",
        "weekcount" : 1
      },
      
       {
        "commentBy" : "raman",
        "comment" : "Planning",
        "datestamp" : "07/07/2017",
        "weekcount" : 1
      },
       {
        "commentBy" : "Execution",
        "comment" : "Alfa Beta",
        "datestamp" : "07/07/2017",
        "weekcount" : 2
      },
        {
        "commentBy" : "Execution",
        "comment" : "Zseta Gama",
        "datestamp" : "07/07/2017",
        "weekcount" : 2
      } 
        ]

//although i have tried writing this function but this is not giving me the desired result.


var groupBy = function(xs, key) {
  return xs.reduce(function(rv, x) {
 
    (rv[x[key]] = rv[x[key]] || []).push(x);
    return rv;
  }, {});
};
var groubedByTeam=groupBy(Dataset1, 'weekcount')
console.log(groubedByTeam);

我想按周计数对数据集进行分组,以便所需的结果应像这样.

I want to grouped the dataset by the weekcount so that the desired result should be like this.

    [
    { "weekcount" : 1
       "grouped" : [
          {   "commentBy" : "saurabh",
              "comment" : "Testing",
              "datestamp" : "07/07/2017"
          }, 
          {
               "commentBy" : "raman",
               "comment" : "Planning",
              "datestamp" : "07/07/2017"
           }
      ]    
    }, {
      "weekcount" : 2
          "grouped" : [
           {
        "commentBy" : "Execution",
        "comment" : "Alfa Beta",
        "datestamp" : "07/07/2017",

      },
        {
        "commentBy" : "Execution",
        "comment" : "Zseta Gama",
        "datestamp" : "07/07/2017",

      } 
      ]    
    }
 ]

推荐答案

const formatted = [];

Dataset1.forEach((data) => {
  const { weekcount, comment, commentBy, datestamp } = data;
  let obj = formatted.find((item) => item.weekcount === weekcount);

  if (!obj) {
    formatted.push({
      weekcount,
      grouped: [{
        comment,
        commentBy,
        datestamp
      }]
    })
  } else {
    obj.grouped.push({
      comment,
      commentBy,
      datestamp
    });
  }
});

const Dataset1 = [{
  "commentBy": "saurabh",
  "comment": "Testing",
  "datestamp": "07/07/2017",
  "weekcount": 1
}, {
  "commentBy": "raman",
  "comment": "Planning",
  "datestamp": "07/07/2017",
  "weekcount": 1
}, {
  "commentBy": "Execution",
  "comment": "Alfa Beta",
  "datestamp": "07/07/2017",
  "weekcount": 2
}, {
  "commentBy": "Execution",
  "comment": "Zseta Gama",
  "datestamp": "07/07/2017",
  "weekcount": 2
}];

const formatted = [];

Dataset1.forEach((data) => {
  const { weekcount, comment, commentBy, datestamp } = data;
  let obj = formatted.find((item) => item.weekcount === weekcount);

  if (!obj) {
    formatted.push({
      weekcount,
      grouped: [{
        comment,
        commentBy,
        datestamp
      }]
    })
  } else {
    obj.grouped.push({
      comment,
      commentBy,
      datestamp
    });
  }
});

console.log(formatted);

这篇关于在Javascript中对嵌套数组进行分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆