JS - 数组分组

示例数据:

let userUsages = 
[ { _id: 5cad99fe0506582a4430491c,
    user: 5c9d8cc3161d6c257c021340,
    key: '1234',
    created: 2019-04-10T07:20:20.600Z },
  { _id: 5cad99af06ebd54558e88716,
    user: 5c9d8cc3161d6c257c021340,
    key: '1234',
    created: 2019-04-10T07:22:23.932Z },
  { _id: 5cad9cd46a97d8470c09b817,
    user: 5c9d8cc3161d6c257c021340,
    key: '1234',
    created: 2019-04-10T07:35:48.273Z },
  { _id: 5cad9d066a97d8470c09b819,
    user: 5c9d8cc3161d6c257c021340,
    key: '2345',
    created: 2019-04-10T07:36:38.448Z },
  { _id: 5cad9d096a97d8470c09b81a,
    user: 5c9d8cc3161d6c257c021340,
    key: '2345',
    created: 2019-04-10T07:36:41.580Z },
  { _id: 5cad9d0e6a97d8470c09b81b,
    user: 5c9d8cc3161d6c257c021340,
    key: '2345',
    created: 2019-04-10T07:36:46.250Z },
  { _id: 5cad9d576a97d8470c09b81f,
    user: 5ca2bc4a54bc0f2fa07b1541,
    key: '3456',
    created: 2019-04-10T07:37:59.826Z },
  { _id: 5cad9d5a6a97d8470c09b820,
    user: 5ca2bc4a54bc0f2fa07b1541,
    key: '3456',
    created: 2019-04-10T07:38:02.308Z },
  { _id: 5cad9d5c6a97d8470c09b821,
    user: 5ca2bc4a54bc0f2fa07b1541,
    key: '3456',
    created: 2019-04-10T07:38:04.469Z },
  { _id: 5cad9d5e6a97d8470c09b822,
    user: 5ca2bc4a54bc0f2fa07b1541,
    key: '3456',
    created: 2019-04-10T07:38:06.770Z },
  { _id: 5cad9d656a97d8470c09b823,
    user: 5ca2bc4a54bc0f2fa07b1541,
    key: '4567',
    created: 2019-04-10T07:38:13.925Z },
  { _id: 5cad9d6a6a97d8470c09b824,
    user: 5ca2bc4a54bc0f2fa07b1541,
    key: '4567',
    created: 2019-04-10T07:38:18.823Z } ]

按照key进行分组:

let keyContainer = {};
userUsages.forEach(element => {
    keyContainer[element.key] = keyContainer[element.key] || [];
    keyContainer[element.key].push(element);
});
console.info(keyContainer);

分组结果:

{ '1234':
   [ { _id: 5cad99fe0506582a4430491c,
       user: 5c9d8cc3161d6c257c021340,
       key: '1234',
       created: 2019-04-10T07:20:20.600Z },
     { _id: 5cad99af06ebd54558e88716,
       user: 5c9d8cc3161d6c257c021340,
       key: '1234',
       created: 2019-04-10T07:22:23.932Z },
     { _id: 5cad9cd46a97d8470c09b817,
       user: 5c9d8cc3161d6c257c021340,
       key: '1234',
       created: 2019-04-10T07:35:48.273Z } ],
  '2345':
   [ { _id: 5cad9d066a97d8470c09b819,
       user: 5c9d8cc3161d6c257c021340,
       key: '2345',
       created: 2019-04-10T07:36:38.448Z },
     { _id: 5cad9d096a97d8470c09b81a,
       user: 5c9d8cc3161d6c257c021340,
       key: '2345',
       created: 2019-04-10T07:36:41.580Z },
     { _id: 5cad9d0e6a97d8470c09b81b,
       user: 5c9d8cc3161d6c257c021340,
       key: '2345',
       created: 2019-04-10T07:36:46.250Z } ],
  '3456':
   [ { _id: 5cad9d576a97d8470c09b81f,
       user: 5ca2bc4a54bc0f2fa07b1541,
       key: '3456',
       created: 2019-04-10T07:37:59.826Z },
     { _id: 5cad9d5a6a97d8470c09b820,
       user: 5ca2bc4a54bc0f2fa07b1541,
       key: '3456',
       created: 2019-04-10T07:38:02.308Z },
     { _id: 5cad9d5c6a97d8470c09b821,
       user: 5ca2bc4a54bc0f2fa07b1541,
       key: '3456',
       created: 2019-04-10T07:38:04.469Z },
     { _id: 5cad9d5e6a97d8470c09b822,
       user: 5ca2bc4a54bc0f2fa07b1541,
       key: '3456',
       created: 2019-04-10T07:38:06.770Z } ],
  '4567':
   [ { _id: 5cad9d656a97d8470c09b823,
       user: 5ca2bc4a54bc0f2fa07b1541,
       key: '4567',
       created: 2019-04-10T07:38:13.925Z },
     { _id: 5cad9d6a6a97d8470c09b824,
       user: 5ca2bc4a54bc0f2fa07b1541,
       key: '4567',
       created: 2019-04-10T07:38:18.823Z } ] }

分组后的结果为JSON对象,可以使用for in进行循环:

 for (let key in keyContainer) {
     console.info(key);
     console.info(keyContainer[key]);
     console.info('================');
 }

循环后的结果:

1234
[ { _id: 5cad99fe0506582a4430491c,
    user: 5c9d8cc3161d6c257c021340,
    key: '1234',
    created: 2019-04-10T07:20:20.600Z },
  { _id: 5cad99af06ebd54558e88716,
    user: 5c9d8cc3161d6c257c021340,
    key: '1234',
    created: 2019-04-10T07:22:23.932Z },
  { _id: 5cad9cd46a97d8470c09b817,
    user: 5c9d8cc3161d6c257c021340,
    key: '1234',
    created: 2019-04-10T07:35:48.273Z } ]
================
2345
[ { _id: 5cad9d066a97d8470c09b819,
    user: 5c9d8cc3161d6c257c021340,
    key: '2345',
    created: 2019-04-10T07:36:38.448Z },
  { _id: 5cad9d096a97d8470c09b81a,
    user: 5c9d8cc3161d6c257c021340,
    key: '2345',
    created: 2019-04-10T07:36:41.580Z },
  { _id: 5cad9d0e6a97d8470c09b81b,
    user: 5c9d8cc3161d6c257c021340,
    key: '2345',
    created: 2019-04-10T07:36:46.250Z } ]
================
3456
[ { _id: 5cad9d576a97d8470c09b81f,
    user: 5ca2bc4a54bc0f2fa07b1541,
    key: '3456',
    created: 2019-04-10T07:37:59.826Z },
  { _id: 5cad9d5a6a97d8470c09b820,
    user: 5ca2bc4a54bc0f2fa07b1541,
    key: '3456',
    created: 2019-04-10T07:38:02.308Z },
  { _id: 5cad9d5c6a97d8470c09b821,
    user: 5ca2bc4a54bc0f2fa07b1541,
    key: '3456',
    created: 2019-04-10T07:38:04.469Z },
  { _id: 5cad9d5e6a97d8470c09b822,
    user: 5ca2bc4a54bc0f2fa07b1541,
    key: '3456',
    created: 2019-04-10T07:38:06.770Z } ]
================
4567
[ { _id: 5cad9d656a97d8470c09b823,
    user: 5ca2bc4a54bc0f2fa07b1541,
    key: '4567',
    created: 2019-04-10T07:38:13.925Z },
  { _id: 5cad9d6a6a97d8470c09b824,
    user: 5ca2bc4a54bc0f2fa07b1541,
    key: '4567',
    created: 2019-04-10T07:38:18.823Z } ]
================

猜你喜欢

转载自blog.csdn.net/seaalan/article/details/89192724