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

如何快速检查指定对象是否存在于多对象嵌套的JavaScript Object中?

检查JavaScript对象中指定属性的最快方式

针对你的场景,分两种情况给出最快实现:

情况1:检查键名edge2是否存在

JavaScript对象的属性查找基于哈希表,时间复杂度为O(1),是最快速的方式,常用两种写法:

  • 使用in操作符:
'edge2' in edges
  • 使用hasOwnProperty方法(仅检查对象自身属性,不包含原型链上的属性):
edges.hasOwnProperty('edge2')

情况2:检查是否存在值为{source: "Horse", target: "4_2_0_0_0x"}的属性(不关心键名)

如果需要匹配的是属性值而非键名,最快的做法是提前构建值的哈希映射,后续检查同样是O(1)的时间复杂度:

// 预先把所有边缘值转成唯一字符串存入Set
const edgeValueSet = new Set();
for (const key in edges) {
  const { source, target } = edges[key];
  edgeValueSet.add(`${source}_${target}`);
}

// 检查目标值
const targetKey = `Horse_4_2_0_0_0x`;
edgeValueSet.has(targetKey);

如果只是单次检查,只能遍历所有属性做对比(时间复杂度O(n),比上面的方法慢):

function checkEdgeExists(edges, targetEdge) {
  for (const key in edges) {
    const current = edges[key];
    if (current.source === targetEdge.source && current.target === targetEdge.target) {
      return true;
    }
  }
  return false;
}

// 调用示例
checkEdgeExists(edges, {source: "Horse", target: "4_2_0_0_0x"});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:30:58