# When comparing nodes using .eq(), what exactly is being compared?

**URL:** https://discuss.prosemirror.net/t/when-comparing-nodes-using-eq-what-exactly-is-being-compared/4369
**Category:** Uncategorized
**Created:** [January 26, 2022, 11:29pm UTC](https://discuss.prosemirror.net/t/when-comparing-nodes-using-eq-what-exactly-is-being-compared/4369 "2022-01-26T23:29:42Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![linsannety](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/linsannety/32/1971_2.png) [@linsannety](https://discuss.prosemirror.net/u/linsannety)
#### Post date: [January 26, 2022, 11:29pm UTC](https://discuss.prosemirror.net/t/when-comparing-nodes-using-eq-what-exactly-is-being-compared/4369/1 "2022-01-26T23:29:42Z")

</div>

Mainly because when I do something like `JSON.stringify(node1.toJSON()) === JSON.stringify(node2.toJSON())`, because the contents are the same, this will return true, but for some reason `node1.eq(node2)`, it’s false. I just want a better understanding of what makes nodes different besides its contents.

Thanks!

---

<div class="post-metadata">

### Author: ![bhl](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/bhl/32/4074_2.png) [@bhl](https://discuss.prosemirror.net/u/bhl)
#### Post date: [January 27, 2022, 4:49am UTC](https://discuss.prosemirror.net/t/when-comparing-nodes-using-eq-what-exactly-is-being-compared/4369/2 "2022-01-27T04:49:15Z")

</div>

> <https://github.com/ProseMirror/prosemirror-model/blob/95298fb02744e1a8f41eae50f8a6afde583a8817/src/node.js#L115-L119>

Content and markup (type, attributes, and marks).

---

<div class="post-metadata">

### Author: ![marijn](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/marijn/32/15_2.png) [@marijn](https://discuss.prosemirror.net/u/marijn)
#### Post date: [January 27, 2022, 10:20am UTC](https://discuss.prosemirror.net/t/when-comparing-nodes-using-eq-what-exactly-is-being-compared/4369/3 "2022-01-27T10:20:29Z")

</div>

> [@linsannety](#):
>
> `JSON.stringify(node1.toJSON) === JSON.stringify(node2.toJSON)`

That’s is stringifying the `toJSON` methods, not the JSON structure they return, which might be what’s causing this.

---

<div class="post-metadata">

### Author: ![linsannety](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/linsannety/32/1971_2.png) [@linsannety](https://discuss.prosemirror.net/u/linsannety)
#### Post date: [January 27, 2022, 7:15pm UTC](https://discuss.prosemirror.net/t/when-comparing-nodes-using-eq-what-exactly-is-being-compared/4369/4 "2022-01-27T19:15:27Z")

</div>

oh actually I mistyped, I meant

```auto
JSON.stringify(node1.toJSON()) === JSON.stringify(node2.toJSON())

```

---

<div class="post-metadata">

### Author: ![marijn](https://discuss.prosemirror.net/user_avatar/discuss.prosemirror.net/marijn/32/15_2.png) [@marijn](https://discuss.prosemirror.net/u/marijn)
#### Post date: [January 28, 2022, 6:52am UTC](https://discuss.prosemirror.net/t/when-comparing-nodes-using-eq-what-exactly-is-being-compared/4369/5 "2022-01-28T06:52:37Z")

</div>

That shouldn’t happen — do you have a code example that reproduces it?
