如何快速检查指定对象是否存在于多对象嵌套的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
相关产品推荐
相关产品推荐

