如何比较树状结构所有下级是否相同?
比如我要用一个name字段 比较树状结构里面的所有name字段 包括所有children 看有没有相同的 不知道树状结构里面有多少级 怎么比较, 并且如果过滤掉自己
回答:
用递归你可以看看这个例子:
const tree = { name: "A",
children: [
{
name: "B",
children: [
{ name: "D" },
{ name: "E" },
],
},
{ name: "C" },
],
};
function hasDuplicateName(tree, parentNode = null) {
const nameSet = new Set();
function traverse(node) {
if (parentNode && node === parentNode) return false;
if (nameSet.has(node.name)) {
return true;
}
nameSet.add(node.name);
if (node.children) {
for (const child of node.children) {
if (traverse(child)) {
return true;
}
}
}
return false;
}
return traverse(tree);
}
console.log(hasDuplicateName(tree)); // 输出 false
// 加一个重复的名字
tree.children[1].children = [{ name: "B" }];
console.log(hasDuplicateName(tree)); // 输出 true
以上是 如何比较树状结构所有下级是否相同? 的全部内容, 来源链接: utcz.com/p/934197.html