Сравнение объектов Сложность Javascript - PullRequest
0 голосов
/ 05 августа 2020

Я хотел бы сравнить производительность сравнения двух объектов в JavaScript, имеющих уникальный идентификатор 'key' с использованием их ключа или знака равенства, например: object1 === object2 или object1.key === object2.key.

Хотя оба мне интересно, лучше ли сравнивать напрямую ключи, так как у него будет только два значения для сравнения, или Javascipt сравнивает каждый ключ / значение в каждом значении, а затем сложность будет O(n) (n - это множество ключей объект)

Это сравнение адресов или что-то еще, чтобы сделать его эффективным?

1 Ответ

1 голос
/ 05 августа 2020

Случай 1. сравнение отдельных объектов:

Пока оба работают

Ну, они не делают:

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

вы можете ' t сравнивать два различных объекта по двум (или трем) знакам равенства. у вас есть два способа:

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 будет сравнивать их по ссылке, а не путем сравнения их пар "ключ-значение".

...