let list=[ {id:1,name:'a'}, {id:1,name:'b'}, {id:1,name:'c'}, {id:2,name:'A'}, {id:2,name:'B'}, {id:2,name:'C'}, ] //对象嵌套数组--{id:[name]} let objList=list.reduce((obj,item)=>{ obj[item.id]?obj[item.id].push(item.name):obj[item.id]=[item.name] return obj },{}) console.log(objList) /* { "1":["a","b","c"], "2":["A","B","C"] } */ //数组嵌套对象--[{id:id,name:[name]}] let arrList=list.reduce((arr,item)=>{ let itemFind =arr.find(a=>(a.id==item.id)) itemFind?itemFind.name.push(item.name): arr.push({id:item.id,name:[item.name]}) return arr },[]) console.log(arrList) /* [ {"id":1,"name":["a","b","c"]}, {"id":2,"name":["A","B","C"]} ] */