v2.5.2
Giriş yap

javascript array variables tanımları birbirini etkiliyor.

istek61
308 defa görüntülendi

Merhabalar,
tanımlı bir array ın 2 kopyasını oluşturuyorum.

bir kopyadan veri sildigimde digerlerinde de siliniyor.
neden böyle saçma birşey oluyor ve nasıl aşılabilir? :))

var abc = [
{ data: { bilgi: "1", yazi: "1",} },
{ data: { bilgi: "2", yazi: "2",} },
{ data: { bilgi: "3", yazi: "3",} },
];

var test = abc;
var deneme = abc;

delete test[0];

console.log(deneme);

Çıktısı :

data: { bilgi: "2", yazi: "2",}
data: { bilgi: "3", yazi: "3",}

deneme array ının ilk itemi neden silindi ?

Cevap yaz
Cevaplar (2)
devepdogukan
666 gün önce

Javascriptte objeler ve diziler değerleriyle değil ram'deki referanslarıyla temsil edilir. Yani

const a = { b:2 };
const b = a;

b ve a şuan ram'deki referansları aynı sen a veya b 'yi güncellediğinde ram'deki referansların değerini güncellemiş oluyorsun. Bu yüzden ikisinin de değeri aynı olmuş oluyor.

Çözüm 1:
Yeni bir referans numarası ile tanımlama

const a = { b:2 };
const b = { ...a };

Çözüm 2:
Objeyi json formatında tanımlama

const a = { b:2 };
const b = JSON.parse(JSON.stringify(a));

Çözüm 3:
structuredClone metodunu kullanarak tanımlama

const a = { b:2 };
const b = structuredClone(a);
istek61
666 gün önce

çok aydınlatıcı oldu teşekkür ederim.