javascript array variables tanımları birbirini etkiliyor.
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 ?
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);