uniapp 微信小程序项目开发中,数据是一个多维数组,这里需要知道这个多维数组的最大深度。首先我们获取其中一个对象的深度。
获取其中一个对象下的深度
可以使用递归来获取带有children字段的多维数组的深度。
以下是一个简单的示例代码:
function getDepth(obj) {
let depth = 1;
if (obj.children && obj.children.length > 0) {
obj.children.forEach(function (d) {
const tmpDepth = getDepth(d) + 1;
if (tmpDepth > depth) {
depth = tmpDepth;
}
});
}
return depth;
}
该函数接受一个多维数组对象作为参数,通过递归遍历每个元素的children属性,计算出每个子元素的深度,并返回最大深度加1(加1是因为根元素也算一层)。如果某个元素没有children属性,则其深度为1。
遍历
我们对数组进行遍历,获取每个对象的深度,然后将其加入到数组,最后获取这个数组中最大值,就可以了。
getMaxDepth() {
var that = this;
var list = [];
that.list.forEach((type) => {
list.push(that.getDepth(type))
});
const maxNum = Math.max(...list)
console.log(maxNum)
return maxNum
},
数组数据
data: [{
"value": "KHFL1301",
"label": "大客户",
"ParentCode": "",
"children": []
}, {
"value": "KHFL1302",
"label": "中级客户",
"ParentCode": "",
"children": []
}, {
"value": "KHFL1303",
"label": "低端客户",
"ParentCode": "",
"children": [{
"value": "KHFL13031",
"label": "低端客户1-1",
"ParentCode": "KHFL1303",
"children": [{
"value": "KHFL13031-9",
"label": "低端客户1-1-101",
"ParentCode": "KHFL13031",
"children": []
}]
}, {
"value": "KHFL13032",
"label": "低端客户2-1",
"ParentCode": "KHFL1303",
"children": []
}]
}]
结果
通过对上面的数据处理,得到的结果是最大深度为3