DataTable分组异常:extractGroup正则提取逻辑错误修复请求
DataTable分组异常:所有行被归为同一组的修复方案
问题场景
DataTable的id列包含以下6个条目:
Supercar 1x01 Supercar 1x02 Supercar 2x01 Supercar 2x02 Supercar 3x01 Supercar 3x02
期望按季分组得到3个分组行(对应S1、S2、S3),显示内容为各季的第一个条目:
Supercar 1x01 Supercar 2x01 Supercar 3x01
但实际仅生成1个分组行,内容为Supercar 1x01,所有行被归为同一组。
问题原因
核心问题在分组逻辑的extractGroup函数,当前正则/[^\d\s]+/仅提取了固定前缀Supercar,所有行的分组键完全一致,导致被合并为一组:
function extractGroup(text) { var match = text.match(/[^\d\s]+/); return match ? match[0] : ''; }
修复方案
需要修改正则,提取季数相关的唯一标识作为分组键,确保同一季的行被归为一组,同时返回分组要显示的文本。
方案1:提取季前缀作为分组键
function extractGroup(text) { // 匹配 "Supercar Nx" 部分,作为分组标识 var match = text.match(/(Supercar \d+x)/); // 返回该季的第一个条目文本作为分组显示内容 return match ? `${match[0]}01` : ''; }
方案2:直接提取季数并生成分组显示文本
function extractGroup(text) { // 提取季数数字,拼接成目标分组文本 var match = text.match(/Supercar (\d+)x\d+/); return match ? `Supercar ${match[1]}x01` : ''; }
修改后,DataTable会根据季数将行分为3组,每组显示对应季的第一个条目,符合预期。
内容的提问来源于stack exchange,提问作者Peter Long
相关产品推荐
相关产品推荐

