You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中含data数组的交易数据按月份分组显示问题求助

解决嵌套data数组的按月份分组问题

我一眼就看出问题出在哪啦——你的customers数组外层多了一层嵌套,直接用_.groupBy处理的话,其实是在对那个包含data键的外层对象做分组,而不是里面真正的交易数据!只需要在lodash的链式调用里加一步,把嵌套的data数组展开就行,完全不用改JSON结构!

修改组件代码里的分组逻辑

把原来的链式调用开头,加上flatMap('data')来提取所有交易项:

ngOnInit() {
  const monthName = item => moment(item.transaction_date, "YYYY-MM-DD").format("MMM");
  
  // 修改这里:先提取嵌套的data数组,再分组
  this.transactions = _.chain(this.customers)
    .flatMap('data') // 关键一步:把每个customer对象里的data数组展开
    .groupBy(monthName)
    .mapValues(items => _.map(items, "customer.name"))
    .value();

  console.log(this.transactions);
}

为什么这能解决问题?

原来的customers结构是:

[
  {
    data: [/* 真正的交易数据在这里 */]
  }
]

直接_.groupBy(this.customers, monthName)时,lodash会遍历外层数组的每个元素(也就是那个带data的对象),但这个对象没有transaction_date属性,所以分组逻辑完全失效。

而_.flatMap('data')会遍历外层数组的每个对象,把它们的data属性值(也就是交易数组)全部合并成一个一维数组,结果就和你能正常工作的customers2结构一模一样了!之后的groupBy和mapValues逻辑就完全能复用。

模板代码不需要修改

你的表格模板逻辑是对的,只要transactions的结构正确(键是月份名称,值是客户名称数组),模板就能正常渲染分组后的内容。

完整修改后的组件代码

export class AppComponent {
  public transactions = {};
  // 带data嵌套的原始数据
  customers = [
    {
      data: [
        {
          customer: { name: "John" },
          transaction_date: "2019-9-22T13:56:11.971643+00:00"
        },
        {
          customer: { name: "Dick" },
          transaction_date: "2019-10-22T13:56:11.971643+00:00"
        },
        {
          customer: { name: "Harry" },
          transaction_date: "2019-7-22T13:56:11.971643+00:00"
        },
        {
          customer: { name: "John" },
          transaction_date: "2019-9-22T13:56:11.971643+00:00"
        }
      ]
    }
  ];

  constructor() {}

  ngOnInit() {
    const monthName = item => moment(item.transaction_date, "YYYY-MM-DD").format("MMM");
    
    this.transactions = _.chain(this.customers)
      .flatMap('data') // 提取嵌套的data数组
      .groupBy(monthName)
      .mapValues(items => _.map(items, "customer.name"))
      .value();

    console.log(this.transactions);
  }
}

这样修改后,就能完美兼容带data[]嵌套的JSON结构,按月份分组展示客户数据啦!

内容的提问来源于stack exchange,提问作者Daire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 18:57:33