Javascript 在某些情况下,平等似乎不正确

Javascript 在某些情况下,平等似乎不正确,javascript,equality,Javascript,Equality,我以前没有用Javascript编程,所以这可能是该语言特有的东西。我试图简单地检查是否在一个边列表中,如果edge.from==currNode(这按预期工作),并且如果edge.to==由节点组成的优先级最高的队列。问题是,&&的LHS工作正常,而RHS总是返回false。frontier优先级队列似乎没有问题,因为当我打印top值时,它返回的节点至少在开始时与FrontierEdge中的edge.to之一匹配 这对我来说似乎很奇怪,因为完全相同的相等性检查怎么能在一对节点参数上工作,而不能

我以前没有用Javascript编程,所以这可能是该语言特有的东西。我试图简单地检查是否在一个边列表中,如果edge.from==currNode(这按预期工作),并且如果edge.to==由节点组成的优先级最高的队列。问题是,&&的LHS工作正常,而RHS总是返回false。frontier优先级队列似乎没有问题,因为当我打印top值时,它返回的节点至少在开始时与FrontierEdge中的edge.to之一匹配

这对我来说似乎很奇怪,因为完全相同的相等性检查怎么能在一对节点参数上工作,而不能在另一对节点参数上工作?有什么建议吗

if (frontierEdges[i].from == currNode && frontierEdges[i].to == frontier.peek()){}
边定义:

export class Edge<Node> {
    from : Node;
    to   : Node;
    cost : number;
}
导出类边缘{
from:节点;
至:节点;
成本:数量;
}

使用identity(
==
)而不是equality时的行为是什么?在JS中,如果对象相同,则对象是相等的,也就是说,
,并且
peek()
的结果必须是相同的对象。显然,
frontier
,不管它是什么,都会返回一个看起来相同但仍然不等于原始对象的对象副本。如果您是javascript新手,请阅读一下
之间的差异==/
=
===
==
-您几乎总是想要
==
==
您是否在比较相同节点的两个独立实例?因为它们是对象,所以它会检查它们是否是同一个实例。我认为这可能也是问题的一部分,但我使用哪一个似乎没有任何区别。