我之前没有用Javascript编程,所以也许这是语言特有的东西。我试图简单地检查边缘列表中是否edge.from == currNode(这是按预期工作)和edge.to ==由节点组成的优先级队列的顶部。问题是,虽然&& amp;的LHS。工作正常RHS总是返回false。边界优先级队列似乎没有问题,因为当我打印顶部值时,它返回一个节点,该节点至少在开始时匹配frontierEdges中的edge.to之一。
这对我来说似乎很奇怪,因为完全相同的相等检查如何在一对节点参数上工作但不能在另一对节点参数上工作?有什么建议吗?
if (frontierEdges[i].from == currNode && frontierEdges[i].to == frontier.peek()){}
边缘定义:
export class Edge<Node> {
from : Node;
to : Node;
cost : number;
}