js对后端传递的三维扁平化数组排序
[{Col:2,Row:3,Lay:1},{Col:1,Row:1,Lay:1},{Col:1,Row:2,Lay:4}]
简略数据格式如上,用sort方法排序
data.Result.sort((a,b)=>{ if(a.Row!==b.Row){ return a.Row-b.Row } else{ return a.Col-b.Col } })
即可输出

_______________________________________________________________________________________________________________________
直接将一个数组转为树形的二维数组(我做的还有一个lay层级没转,三维多加一步就行)
this.tableData = data.Result.sort((a,b)=>{ // 先进行排序 if(a.Row!==b.Row){return a.Row-b.Row} else if(a.Col!==b.Col){return a.Col-b.Col} else{return a.Lay-b.Lay} }) let loctionarr=this.tableData.map((c,i)=>{ // 获取所有的行列可能 return {Row:c.Row,Col:c.Col} }) const map=new Map() // 将此行列集合去重 for(let item of loctionarr){ if(!map.has(''+item.Row+'-'+item.Col+'')){ // Map不能两个参数去重,这里将他拼接成字符串,也可以直接JSON.stringify()序列化整个对象 map.set(''+item.Row+'-'+item.Col+'',item) } } loctionarr=[...map.values()] // 提出去重后的数组 loctionarr.map(c=>c.childs=[]) //进行对应行列的字数据绑定 loctionarr=loctionarr.filter(c=>c.Row!==0) for(let i=0;i<this.tableData.length;i++){ let obj=this.tableData[i] for(let j=0;j<loctionarr.length;j++){ if(obj.Row===loctionarr[j].Row&&obj.Col===loctionarr[j].Col){ loctionarr[j].childs.push(obj) } } } this.tableData=loctionarr

浙公网安备 33010602011771号