Vue将数据按照某个属性创建分组
/** * * @param list 待处理列表 * @param key 分组字段 * @returns {{[p: string]: *, list: *}[]} */ handleData(list,key){ //得到数据的主键列表 let keysArr = list.map(item=>item[key]) let keys = [...new Set(keysArr)] let newList = keys.map(item=>{ return { //这里写新的 数据结构 如下是整体复制 [key]:item, children:list.filter(i=>i[key]==item) } })return newList; },
方法2:直接分组
handleData2(array, key){
const groups = {}
array.forEach(function (o) {
const group = o[key]
groups[group] = groups[group] || []
groups[group].push(o)
})
//console.log(groups)--图1
//{收入主题:[{},{}...],住院主题:[{},{},,]}
return Object.values(groups)--图2
},
const gridData =[
{
id: '22',
name: '张三',
code: '15'
},
{
id: '23',
name: '李四',
code: '15'
},
{
id: '24',
name: '李五',
code: '14'
}
]
const mergeList = groupBy(gridData, 'code')
console.log(mergeList)
返回值: [[{"id":"24","name":"李五","code":"14"}],[{"id":"22","name":"张三","code":"15"},{"id":"23","name":"李四","code":"15"}]]
方法1
方法2:
图1:
图2
如有差错,请各位指正