实现这种效果,同一种知识点类型合并行。
<Table
columns={columns}
// dataSource={dataSource}
dataSource={createNewArr(dataSource)}
pagination={false}
/>
function createNewArr (data) {
return data.reduce((result, item) => {
//首先将name字段作为新数组result取出
if (result.indexOf(item.knowleagePointTypeName) < 0) {
result.push(item.knowleagePointTypeName)
}
return result
}, []).reduce((result, name) => {
//将name相同的数据作为新数组取出,并在其内部添加新字段**rowSpan**
const children = data.filter(item => item.knowleagePointTypeName === name);
result = result.concat(
children.map((item, index) => ({
...item,
rowSpan: index === 0 ? children.length : 0,//将第一行数据添加rowSpan字段
}))
)
return result;
}, [])
}