在JavaScript中按月将数据分组

假设我们有一些关于这样的用户的数据-

const obj = {

   "Mary": {

      "2016-1": 2,

      "2016-5": 1,

      "2016-3": 1

   },

   "Paul": {

      "2016-1": 1,

      "2016-3": 1

   },

   "moth": {

      "2016-1": 2,

   "2016-5": 1

   }

};

我们需要编写一个接受一个这样的对象的JavaScript函数。我们的功能应该将此用户数据分组为对象,其中每个唯一的日期都由一个对象表示。

示例

为此的代码将是-

const obj = {

   "Mary": {

      "2016-1": 2,

      "2016-5": 1,

      "2016-3": 1

   },

   "Paul": {

      "2016-1": 1,

      "2016-3": 1

   },

   "moth": {

      "2016-1": 2,

      "2016-5": 1

   }

};

const groupByDate = (obj = {}) => {

   const names = Object.keys(obj);

   const res = {};

   for(let i = 0; i < names.length; i++){

      const name = names[i];

      const dates = Object.keys(obj[name]);

      for(let j = 0; j < dates.length; j++){

         const date = dates[j];

         if(!res.hasOwnProperty(date)){

            res[date] = {

               names: [name],

               values: [obj[name][date]]

            }

         }

         else{

            res[date].names.push(name);

            res[date].values.push(obj[name][date]);

         };

      };

   };

   return res;

};

console.log(groupByDate(obj));

输出结果

控制台中的输出将是-

{

   '2016-1': { names: [ 'Mary', 'Paul', 'moth' ], values: [ 2, 1, 2 ] },

   '2016-5': { names: [ 'Mary', 'moth' ], values: [ 1, 1 ] },

   '2016-3': { names: [ 'Mary', 'Paul' ], values: [ 1, 1 ] }

}

以上是 在JavaScript中按月将数据分组 的全部内容, 来源链接: utcz.com/z/338054.html

回到顶部