举个例子,假如我们要合并2019年这一年的年份
/**
* 合并单元格
* @param text 当前的值
* @param array 当前这一行的数据
* @param columns 当前的key 也就是year
* @returns {number}
*/
// 定义一个变量,因为初始化的时候第一行是个空
let temp = {};
let tempNumber = {}
const mergeCells = (text, array, columns) => {
let i = 0;
// 如果这一行的值不等于 key 也就是123!=undifind
if (text !== temp[columns]) {
// 给这一列塞值 year= 2019
temp[columns] = text;
// 遍历这个数组 如果所有数据源的这一列的key 等于咱们的key 咱们就让它扩下一行
array.forEach(item => {
if (item[columns] === temp[columns]) {
i += 1;
}
});
}
tempNumber[columns] = i
return i;
}
/**
* 获取 temp
* @param {[type]} columns [description]
* @return {[type]} [description]
*/
const getTemp = (columns) => {
return tempNumber[columns]
}
/**
* 清空 temp
* @return {[type]} [description]
*/
const removeTemp = () => {
temp = {}
tempNumber= {}
}
{
title: '年份',
width: '8%',
dataIndex: 'year',
maxRank: 10,
render: text => {
const obj = {
children: text,
props: {}
};
let dataList = this.state.dataSource;
if(text) {
obj.props.rowSpan = mergeCells(text, dataList, 'year')
}
return obj;
}
}
效果图