【问题标题】:Object comparison Complexity Javascript对象比较复杂性 Javascript
【发布时间】:2020-11-25 02:29:14
【问题描述】:

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

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

是比较地址还是什么来提高效率?

【问题讨论】:

  • 是否存在具有相同.key 的不同对象?那么你的第一个版本就行不通了,对象是通过它们的身份(“地址”)而不是它们的内容来比较的。

标签: javascript object time-complexity equality


【解决方案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 将通过引用来比较它们,而不是通过比较它们的键值。

【讨论】:

  • 谢谢!很好的答案
猜你喜欢
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多