比如我要用一个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
问题内容: 我想检查两个结构,切片和映射是否相等。 但是我遇到了以下代码的问题。在相关行中查看我的评论。 http://play.golang.org/p/AZIzW2WunI 问题答案: 您可以使用reflect.DeepEqual,也可以实现自己的函数(在性能上比使用反射更好): http://play.golang.org/p/CPdfsYGNy_
两个 NavigableString 或 Tag 对象具有相同的HTML或XML结构时, Beautiful Soup就判断这两个对象相同. 这个例子中, 2个 <b> 标签在 BS 中是相同的, 尽管他们在文档树的不同位置, 但是具有相同的表象: “<b>pizza</b>” markup = "<p>I want <b>pizza</b> and more <b>pizza</b>!</p>"
两个 NavigableString 或 Tag 对象具有相同的HTML或XML结构时, Beautiful Soup就判断这两个对象相同. 这个例子中, 2个 <b> 标签在 BS 中是相同的, 尽管他们在文档树的不同位置, 但是具有相同的表象: “<b>pizza</b>” markup = "<p>I want <b>pizza</b> and more <b>pizza</b>!</p>"
如何比较两个javascript集?我尝试使用和但都返回false。 这两个集合是等价的,因为根据定义,集合没有顺序(至少通常没有)。我看了MDN上的集合的留档,没有发现任何有用的东西。有人知道怎么做吗?
问题内容: 我有上述2个类(POJO),它们都是绝对相同的(除了课程名称),我将它们添加到两个数组列表:aListA和aListB。我需要比较两个对象是否相同。如果它们相同,则需要将它们添加到另一个列表(commonList)中,如果它们恰好是不同的,则需要将它们添加到另一个列表(differentList)中。我写了以下代码: 我的问题是,即使两个不同POJO中的数据(变量,firstId和se
问题内容: 比较运算符的 “ Go编程语言规范”部分使我相信,仅包含可比较字段的结构应具有可比性: 如果结构的所有字段都是可比较的,则它们的值是可比较的。如果两个结构值对应的非空白字段相等,则它们相等。 这样,由于“ Student”结构中的所有字段都是可比较的,因此我希望编译以下代码: 但是,它无法使用以下消息进行编译: 无效的操作:alice> = carol(运算符> =未在结构上定义) 我