现有一个树形结构数据,在后端直接通过hutool的树工具转成树结构数据List<Tree<String>> list ,分为三种类型的节点,返回的数据中发现没有对这些数据根据类型进行排序,所以在前端对这个树结构数组进行了处理
private dataSorting(data) {
this.handleTreeData(data)
data.forEach(v => {
if (!!v.children && v.children.length) {
this.dataSorting(v.children)
} else {
}
})
}
private handleTreeData(data) {
//根据数组 treeNode 树节点在前,叶子节点在后 最后为未分类节点
let order = ['treeNode', 'leafNode', 'uncategorized']
data.sort((a, b) => {
return order.indexOf(a.type) - order.indexOf(b.type)
})
}
如果需要根据多个条件字段排序可以改为如下:先按照节点类型type排序,如果类型一致则按照创建时间排序createTime。
b.属性 - a.属性 代表按这个字段值降序排序
a.属性 - b.属性 代表按这个字段值升序排序
data.sort((a, b) => {
let compare = order.indexOf(a.type) - order.indexOf(b.type)
if (compare == 0) {
return Date.parse(b.createTime) - Date.parse(a.createTime)
} else {
return compare
}
})