分享一个今天在开发中遇到的问题,要处理一个树形数据,只想保留前两层,两层再往下的数据就不要了,简单可以理解为:树形数据保留指定层级。
主要思路还是递归,代码封装成了公共方法,方便以后用的时候直接调用:
/**
* @description 树形数据保留指定层级
* @param data
* @param level
* @return {*[]|*}
*/
const keepNodesAtLevel = (data, level) => {
if (level == 1) {
return data.map((node) => {
return {
value: node.value,
label: node.label
}
})
}
let result = []
for (let i = 0; i < data.length; i++) {
let node = data[i]
if (node.children) {
node.children = keepNodesAtLevel(node.children, level - 1)
}
result.push(node)
}
return result
}