首页 > 解决方案 > 使用 Lodash 进行分组和计数

问题描述

我遇到了障碍,无法弄清楚如何计算字段的数量。我知道 _.countBy 和 _.size 可以通过 Lodash 获得,但由于某种原因无法得出正确的值。subgroup.items 数组包含格式如下的值:

{
  store name: 'A',
  sku title: '12345'
},
{
  store name: 'A',
  sku title: 09865
},
{
  store name: 'A',
  sku title: 63542
}

我的代码块是这样的:

subGroup.items = _.chain(subGroup.items)
  .groupBy('store name')
  .map(function(v, i) {
    return {
       store: i,
       sku: _.reduce(
         v,
         function(res, val) {
           return res + val['sku title'];
         },
       0
     ),
  };
 })
.value();

我怎样才能返回值,以便它显示每个商店有多少 sku 标题是这样的......

store name: 'A',
sku title: '3'

标签: javascriptnode.jslodash

解决方案


如果你想要的只是一个计数,你应该能够使用v.length而不是使用_.reduce(v,...)

var subGroup = {};
subGroup.items = [{
  "store name": 'A',
  "sku title": '12345'
},
{
  "store name": 'A',
  "sku title": 09865
},
{
  "store name": 'A',
  "sku title": 63542
}];


subGroup.items = _.chain(subGroup.items)
  .groupBy('store name')
  .map(function(v, i) {
    return {
       store: i,
       sku: v.length
  };
 })
.value();

console.log(subGroup.items);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>


推荐阅读