JS - 数组分组

本文介绍如何利用JavaScript对数组进行分组操作,通过示例数据展示了按特定key进行分组的过程,分组结果以JSON对象形式呈现,并提供了遍历分组后结果的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

示例数据:

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 } ]
================
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值