object equivalence in arrays
by kevincollins
HTML
<pre id="out"></pre>
JavaScript
var a1 = [{
i: 0,
s: 'zero'
}, {
i: 1,
s: 'one'
}];
var a2 = [
a1[0],
a1[1]
];
// items point to same reference
print(a1[0] === a2[0]); // true (equivalent)
// updating one affects both
a1[0].s += ' updated';
print(a1[0] === a2[0]); // true (still equivalent)
print(a1[0]); // {"i":0,"s":"zero updated"}
print(a2[0]); // {"i":0,"s":"zero updated"}
// however, deleting one does not affect the other
delete a1[0];
print(a1[0]); // undefined
print(a2[0]); // {"i": 0, "s": "zero"}
function print(obj) {
document.querySelector('#out').innerHTML += "<p>" + JSON.stringify(obj) + "</p>"
}