对象比较复杂度 Javascript
Object comparison Complexity Javascript
我想比较 JavaScript 中具有唯一 ID 'key' 的两个对象的性能,使用它们的键或等号,即:object1 === object2
或 object1.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.
我想比较 JavaScript 中具有唯一 ID 'key' 的两个对象的性能,使用它们的键或等号,即:object1 === object2
或 object1.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.