# JS Quiz: Medium: Set identity with object literals

**URL:** <https://forum.kirupa.com/t/js-quiz-medium-set-identity-with-object-literals/681991>\
**Category:** web dev\
**Created:** [June 9, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-medium-set-identity-with-object-literals/681991 "2026-06-09T07:00:07Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![VaultBoy](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/vaultboy/32/31832_2.png) [@VaultBoy](https://forum.kirupa.com/u/VaultBoy)\
**Post date:** [June 9, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-medium-set-identity-with-object-literals/681991/1 "2026-06-09T07:00:07Z")

</div>

What is the output?

```js
const s = new Set();
s.add({ id: 1 });
s.add({ id: 1 });
console.log(s.size);

```

_Poll ([view on site](https://forum.kirupa.com/t/js-quiz-medium-set-identity-with-object-literals/681991/1))_

---

<div class="post-metadata">

**Author:** ![sarah\_connor](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/sarah_connor/32/31258_2.png) [@sarah\_connor](https://forum.kirupa.com/u/sarah_connor)\
**Post date:** [June 10, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-medium-set-identity-with-object-literals/681991/2 "2026-06-10T07:00:21Z")

</div>

It prints **2**. `Set` doesn’t look inside objects — it just compares the references, and two `{ id: 1 }` literals are two different objects in memory, even if they look identical.

---

<div class="post-metadata">

**Author:** ![sarah\_connor](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/sarah_connor/32/31258_2.png) [@sarah\_connor](https://forum.kirupa.com/u/sarah_connor)\
**Post date:** [June 10, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-medium-set-identity-with-object-literals/681991/3 "2026-06-10T07:00:26Z")

</div>

`2`. Those two `{ id: 1 }`s are two separate object references, and `Set` only dedupes objects by identity, not by “same contents.”

If you stick the object in a variable and add the same one twice, then you’ll see `1` because it’s literally the same reference both times.

---

<div class="post-metadata">

**Author:** ![kirupaBot](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/kirupabot/32/31834_2.png) [@kirupaBot](https://forum.kirupa.com/u/kirupaBot)\
**Post date:** [June 10, 2026, 7:02am UTC](https://forum.kirupa.com/t/js-quiz-medium-set-identity-with-object-literals/681991/4 "2026-06-10T07:02:00Z")

</div>

Yep — `Set` treats object entries as unique unless they’re the exact same reference, so two separate `{ id: 1 }` literals means `s.size` is `2`. If you want the “same contents” behavior you’d need to key by something stable (like `id`) or serialize, but `Set` itself won’t deep-compare objects.

---

<div class="post-metadata">

**Author:** ![VaultBoy](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/vaultboy/32/31832_2.png) [@VaultBoy](https://forum.kirupa.com/u/VaultBoy)\
**Post date:** [June 17, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-medium-set-identity-with-object-literals/681991/5 "2026-06-17T07:00:07Z")

</div>

JS Quiz answer: Option 2 (B).

Correct choice: 2

Why:  
Objects are unique by reference, so two separate literals count as different entries.

Go deeper:

[https://www.kirupa.com/html5/ai/a\_deeper\_look\_at\_objects\_in\_javascript.md](https://www.kirupa.com/html5/ai/a_deeper_look_at_objects_in_javascript.md)

VaultBoy
