Angular中如何获取分组后对象内数组的长度?
获取分组对象中数组的长度方法
嘿,我来帮你搞定这个问题!你已经成功把rowData按日期分组到obj对象里了,要获取这些数组的长度其实很简单,分两种常见场景来看:
1. 获取每个日期分组对应的数组长度
如果你想知道每个日期下有多少条数据,可以通过遍历obj的键或键值对来实现:
方式一:直接遍历并打印
// 遍历obj的键值对,输出每个日期的数组长度 Object.entries(obj).forEach(([date, items]) => { console.log(`日期 ${date} 对应的条目数:${items.length}`); });
方式二:将长度存入新对象
如果需要把每个日期的长度保存起来复用,可以创建一个新对象存储:
const groupItemCounts: { [key: string]: number } = {}; Object.keys(obj).forEach(dateKey => { groupItemCounts[dateKey] = obj[dateKey].length; }); // 此时groupItemCounts会是类似这样的结构:{ '2024-05-20': 4, '2024-05-21': 6 } console.log(groupItemCounts);
2. 获取所有分组数组的总长度
如果需要统计所有分组里的总数据条数,可以用reduce方法累加每个数组的长度:
const totalItemCount = Object.values(obj).reduce((total, items) => { return total + items.length; }, 0); console.log(`所有分组的总条目数:${totalItemCount}`);
小提示:优化你的分组代码
顺便提一句,你原来的分组逻辑可以用Array.reduce简化,让代码更简洁:
const obj: { [key: string]: any[] } = this.rowData.reduce((acc, item) => { if (!item) return acc; // 过滤空item const date = format(item.lastpmdate, 'YYYY-MM-DD'); acc[date] = acc[date] ? [...acc[date], item] : [item]; return acc; }, {} as { [key: string]: any[] });
这样写和你原来的逻辑效果一样,但代码更紧凑哦~
内容的提问来源于stack exchange,提问作者ABC
相关产品推荐
相关产品推荐

