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

 

posted @ 2022-12-13 18:36  Timeouting  阅读(1393)  评论(0编辑  收藏  举报