对象比较 复杂度 Javascript

Object comparison Complexity Javascript

提问人:Ron BELLAICHE 提问时间:8/5/2020 最后编辑:BergiRon BELLAICHE 更新时间:8/5/2020 访问量:343

问:

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

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

是比较地址还是提高效率?

JavaScript 对象 时间复杂 度相等

评论

1赞 Bergi 8/5/2020
是否有相同的不同对象?那么你的第一个版本将不起作用,对象是按其身份(“地址”)而不是按其内容进行比较的。.key

答:

0赞 yaya 8/5/2020 #1

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

虽然两者都在工作

好吧,他们没有:

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

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

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

艺术

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

显然,第二个更有效率。


案例 2.比较非明显对象,例如:

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 会通过参考来比较它们,而不是通过比较它们的键值。

评论

1赞 Ron BELLAICHE 8/5/2020
谢谢!很好的答案