Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “的大O”;在;循环内部运算符_Javascript_Big O - Fatal编程技术网

Javascript “的大O”;在;循环内部运算符

Javascript “的大O”;在;循环内部运算符,javascript,big-o,Javascript,Big O,考虑一下这个片段: 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 } 该算法的大O可以被认为是O(n),还是应该是O(n^2),因为: if(!(key ** 2 in obj2)) 被视为循环遍历obj2的所有项目(搜索) **注**:假设obj1和obj2的长度相等我怀疑中的并不是在所有项

考虑一下这个片段:

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
  }
该算法的大O可以被认为是O(n),还是应该是O(n^2),因为:

if(!(key ** 2 in obj2))
被视为循环遍历obj2的所有项目(搜索)


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

我怀疑中的
并不是在所有项目中循环,而是像哈希表一样工作。所以我会说它是O(n)。

我怀疑
中的
并不是在所有项目中循环,而是像哈希表一样工作。所以我会说它是O(n)。

一个JavaScript对象实际上是一个哈希表,所以查找一个键就是O(1)


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

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


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

它取决于属性查找算法的实际实现。在任何现代JavaScript运行时,它都比线性更好,这是一个好现象。为什么在for循环中,
中的
操作符的大O会发生变化?@Pointy我是唯一一个认为他担心的是
键**2
导致它是二次的人吗?@Barmar它与键**2无关,我担心的是“in”搜索是在所有项目中循环,这将发生在外循环中,因此结果是O(n^2),但结果是“in”搜索是O(1),正如这里提到的。我发现,但我认为您的问题是关于
键**2
的,这是可疑的。这取决于属性查找算法的实际实现。在任何现代JavaScript运行时,它都比线性更好,这是一个好现象。为什么在for循环中,
中的
操作符的大O会发生变化?@Pointy我是唯一一个认为他担心的是
键**2
导致它是二次的人吗?@Barmar它与键**2无关,我担心的是“in”搜索是在所有项目中循环进行的,这将发生在外循环中,因此结果是O(n^2),但正如mates在这里提到的,“in”搜索是O(1)。我发现了这一点,但我认为您的问题是关于
键**2
的,这是可疑的。