You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询校验数组中嵌套对象,判断两个Node节点是否已存在邻接关系

解决方案

最优实现方式

核心思路是用Array.prototype.some()遍历neighbours数组,匹配oppositeNode是否等于目标节点,该方法匹配到第一个符合条件的元素就会终止遍历,性能最优。
你提到的解构赋值完全适用于这个场景,可以简化代码写法。

基础实现写法

// 直接判断逻辑
if (nodea.neighbours.some(neighbour => neighbour.oppositeNode === nodeb)) {
  // 执行逻辑x
}

结合解构赋值的简化写法

直接在回调参数中解构出oppositeNode,代码更简洁:

if (nodea.neighbours.some(({ oppositeNode }) => oppositeNode === nodeb)) {
  // 执行逻辑x
}

可复用封装方案

建议把判断逻辑封装为Node类的内置方法,后续调用更方便:

class Node {
  constructor(nodeName) {
    this.nodeName = nodeName;
    this.neighbours = [];
  }
  // 新增判断邻接的实例方法
  hasNeighbour(targetNode) {
    return this.neighbours.some(({ oppositeNode }) => oppositeNode === targetNode)
  }
};

// 调用方式
if (nodea.hasNeighbour(nodeb)) {
  // 执行逻辑x
}

补充说明

如果你的业务场景中nodeName可以唯一代表节点,即使是不同实例也视为同一个节点,可以把匹配条件改成判断nodeName相等:

hasNeighbour(targetNode) {
  return this.neighbours.some(({ oppositeNode }) => oppositeNode.nodeName === targetNode.nodeName)
}

内容的提问来源于stack exchange,提问作者user16602393

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:54:06