Wenn die gleiche Objektreferenz in zwei Arrays existiert, sind die Objekte gleichwertig, und die Aktualisierung der einen wirkt sich auf die andere aus.js löschen Objektreferenz von zwei Arrays
Das Löschen des Objekts aus einem Array löscht es jedoch nicht in dem anderen.
Warum nicht?
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"}
Interessanterweise wirkt sich das Löschen einer Eigenschaft von einer auf die andere aus.
delete a1[1].s;
print(a1[1]); // {"i":1}
print(a2[1]); // {"i":1}
https://jsfiddle.net/kevincollins/4j6hj2v7/3/
Sie löschen einen Verweis auf den Wert, nicht den Wert selbst. Sehen Sie es so, als würde man einer Person einen Namen zuweisen. Wenn du aufhörst, sie Chris zu nennen, verschwinden sie nicht plötzlich. – Halcyon
Objekte werden anhand einer Referenz zugewiesen. Also, wenn Sie 'a1 [0]' tun, wird es seine Referenz abrufen und es in Array kopieren und wird es verwenden, um auf Wert zuzugreifen. Wenn Sie den Verweis löschen, entfernen Sie den ursprünglichen Speicherort und daher wird es in allen Variablen widergespiegelt. – Rajesh
Verwenden Sie nicht 'löschen' auf Arrays. Setzen Sie den Index einfach auf "null" oder "undefiniert". – Bergi