纯情掉了一地
2020-05-26 12:20:05浏览 2145
项目涉及大量表格 很多时候会采用估算和手动调试的方式来设置 column 宽度不太恰当,所以尝试实现自适应。 核心是对数据层进行修改,代码提供参考。
let column = [
{label:"用户id",prop:"userId"},
{label:"用户姓名",prop:"userName"},
{label:"创建日期",prop:"createData"},
]
let data = [
{
userId:1,
userName:"张三",
createData:'2020-05-26 12:10:56'
},
{
userId:2,
userName:"李狗蛋",
createData:'2020-05-26 12:10:56'
}
]
let resolveColumn = _cmptWidth(column,data)
console.log(resolveColumn)
_cmptWidth(min=30,column,data){
let temp={};
Object.keys(data[0]).forEach(key=>{
temp[key]=[]
})
data.map(i=>{
Object.keys(i).forEach(key=>{
let str = i[key] && i[key].toString();
let cn = str && str.match(/[\u4e00-\u9fa5]/g)&&str.match(/[\u4e00-\u9fa5]/g).length||0
let en = str && str.match(/[A-Za-z0-9]/g)&&str.match(/[A-Za-z0-9]/g).length||0
let len =Math.max( en + cn*2 + ,10) ;
temp[key].push(Math.min(len,min))
})
})
return column.map(i=>{
let width = Math.ceil(temp[i.prop].reduce((a,b)=>a+b)/rows.length)
return {
...i,
width:width*12+'px'
}
})
}