javascript - 使用 Lodash 进行分组和计数

标签 javascript node.js 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'

最佳答案

如果你想要的只是一个计数,你应该能够使用 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>

关于javascript - 使用 Lodash 进行分组和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59990767/

相关文章:

javascript - 将对象转换为具有给定顺序的数组

javascript - 4 FOSJSRouting 回调=fos.Router.setData & 仅在生产中找不到路由

javascript - 如果在 attr 绑定(bind)内则 knockout

java - 检测文件是否准备就绪并提供下载服务

node.js - solve() 函数在 promise 中返回未定义

javascript - Node js文件执行

javascript - 当在 Node.js 中调用我的函数之一时,程序首先调用 emitHookFactory 并陷入无限循环

javascript - Cookie 未存储在 Android Webview 中

Javascript reduce 给出了不正确的值

typescript - 在哪里可以找到 lodash/fp 的 typescript 类型?