for循环内“ in”运算符的Big O [重复项]

问题描述 投票:0回答:2

请考虑以下代码段:

const obj1 = {1:1, 2:1, 3:1}
const obj2 = {1:1, 4:1, 9:1}

for(let key in obj1){
    if(!(key ** 2 in obj2)) return false
  }

由于以下原因,该算法的Big O是否可以视为O(n)或应为O(n ^ 2)?

if(!(key ** 2 in obj2))

被认为遍历obj2的所有项(搜索)

**注意:假设obj1和obj2的长度相等

javascript big-o
2个回答
1
投票

JavaScript对象实际上是哈希表,因此查找键为O(1)。

因此,总算法为O(n)。


0
投票

我怀疑in不会遍历所有项,但是像哈希表一样工作。所以我要说它的O(n)。

© www.soinside.com 2019 - 2024. All rights reserved.