点击查看代码
export function listToTree(list, id, pid) {
list.forEach((node) => {
const pNdoe = list.find((row) => row[id] === node[pid])
if (pNdoe) {
pNdoe.children = pNdoe.children || []
pNdoe.children.push(node)
}
})
return list.filter((node) => !node[pid])
}
export function getAllChidlren(data, key, value) {
var result = [];
var fn = function(data) {
if (Array.isArray(data)) {
data.forEach(item => {
if (item[key] === value) {
result.push(item);
} else if (item.children) {
fn(item.children);
}
})
}
}
fn(data);
return result;
}
export function treeFilter(tree, func) {
return tree.map(node => ({ ...node })).filter(node => {
node.children = node.children && treeFilter(node.children, func)
return func(node) || (node.children && node.children.length)
})
}
export function treeFind(tree, func) {
for (const data of tree) {
if (func(data)) return data
if (data.children) {
const res = treeFind(data.children, func)
if (res) return res
}
}
return null
}
export function treeFindPath(tree, func, path = []) {
if (!tree) return []
for (const data of tree) {
path.push(data.id)
if (func(data)) return path
if (data.children) {
const findChildren = treeFindPath(data.children, func, path)
if (findChildren.length) return findChildren
}
path.pop()
}
return []
}
export function formatTree(treeData, func) {
const dfs = (treeData) => {
for (const node of treeData) {
if (func(node)) {
Object.assign(node, func(node))
}
if (node.children && node.children.length) {
dfs(node.children)
}
}
return treeData
}
return dfs(treeData)
}
export function findPathbyName(tree, name, path = []) {
if (typeof path === 'undefined') {
path = []
}
for (let i = 0; i < tree.length; i++) {
let tempPath = [...path]
tempPath.push(tree[i].meta.title)
if (tree[i].name === name) {
return tempPath
}
if (tree[i].children) {
const reuslt = findPathbyName(tree[i].children, name, tempPath)
if (reuslt) {
return reuslt
}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-05-25 iTextSharp.dll生成pdf 实战实例
2020-05-25 .net学习网站汇总