Oddness Javascript con array di oggetti e indexOf

Non capisco cosa sta succedendo qui. Dato l’array (arr):

[ { "first_name": "Dan", "last_name": "Woodson", "id": 1 }, { "first_name": "Jen", "last_name": "Woodson", "id": 2 }, { "first_name": "Yoshi", "last_name": "Woodson", "id": 3 } ] 

E l’object (obj):

 { "first_name": "Yoshi", "last_name": "Woodson", "id": 3 } 

Perché arr.indexOf(obj) restituisce -1 (soprattutto perché ho recuperato l’object dall’array utilizzando il suo parametro ‘id’ in precedenza nella funzione)?

Array.indexOf() funzionerà solo sugli oggetti se l’object fornito è esattamente lo stesso object inserito .

Una copia esatta è insufficiente, deve essere lo stesso object esatto , cioè deve esserci qualche object nell’array tale che:

 arr[i] === obj 

Devi mostrare come hai recuperato l’object.

Mi piacerebbe vedere la funzione di recupero, ma molto probabilmente non stai usando lo stesso riferimento. Perché il seguente è vero:

 var a = {id: 3}; var b = [a]; b.indexOf(a); // 0 a.id = "not three"; b.indexOf(a); // still 0 

Tuttavia, il seguente si romperà:

 var a = {id: 3}; var b = [{id: 3}]; b.indexOf(a); // -1 not the same object