【问题标题】:How to get supplierName and count of items from a list?如何从列表中获取供应商名称和项目数量?
【发布时间】:2020-10-09 08:36:07
【问题描述】:

在我的 vue 应用程序中,有一个带有未结采购订单的列表。每个订单都有一个供应商名称。

我喜欢生成一个包含所有供应商名称和他们拥有的未结采购订单数量的列表。

使用 lodash,我可以生成供应商列表:

computed: {
  menuItems: function () {
    let mappedItems =  this.partsToOrder.map(function (parts) {
      return { supplierName: parts.supplier_name, supplierId: parts.supplier_id }
    })
    return _.uniqWith(mappedItems)
  }
},

如何添加每个供应商的商品数量?这意味着,如果供应商有两个未结订单,我希望将供应商名称与项目数 (2) 放在一起,如下所示:

{supplierName: 'Tech Ltd.', numOrders: 2}

【问题讨论】:

  • 您想对数组进行分组吗?按供应商名称?
  • 是的,没错。这就是我需要的
  • 我为问题编辑了标签,这与 vue 无关,它只是关于 Javascript :)
  • _.map(_.countBy(data, "supplierName"), (val, key) => ({ supplierName: key, numOrders: val })) ...来自这个答案:stackoverflow.com/a/44649268/3545099

标签: javascript lodash


【解决方案1】:

let data = [
  {supplierName: 'Tech Ltd.'},
  {supplierName: 'Tech Ltd.'},
  {supplierName: 'Tech Ltd.'},
  {supplierName: 'abc'},
  {supplierName: 'abc'},
  {supplierName: 'stackoverflow'},
  {supplierName: 'Dell'},
  {supplierName: 'Dell'},
];

let mappedData = _.chain(data)
  .groupBy('supplierName')
  .map((group, supplierName) => ({
    supplierName,
    numOrders: _.countBy(group, 'supplierName')[supplierName],
  }))
  .value();

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    相关资源
    最近更新 更多