对象比较复杂度 Javascript

Object comparison Complexity Javascript

我想比较 JavaScript 中具有唯一 ID 'key' 的两个对象的性能,使用它们的键或等号,即:object1 === object2object1.key === object2.key .

虽然两者都在工作,但我想知道直接比较键是否更好,因为它只有两个值要比较,或者是 Javascipt 比较每个值中的每个键/值,然后复杂度将是 O(n)(n 是一个对象的键数)

它是通过比较地址还是其他方式来提高效率?

案例 1. 比较不同的对象:

While both are working

他们没有 :

{a: 1} == {a: 1} // false

你不能用两个(或三个)等号来比较两个不同的对象。你有两种方式:

JSON.stringify({a: 1}) === JSON.stringify({a: 1})

或者:

{key: 1, a: 1}.key === {key: 1, a: 1}.key

显然第二种效率更高


案例 2. 比较 non-distinct 个对象,例如:

var obj1 = {key: 1, a: 1, b: 2}
var obj2 = {key: 2, a: 1, b: 2}
var obj3 = obj1
obj3 === obj1 // true

直接比较和按键比较没有区别,都是O(1),因为js会比较refrence,而不是比较key-values.