Menu
Coddy logo textTech

Sığ ve Derin Kopyalama

Coddy'nin JavaScript Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 25 / 65.

Nesneleri kopyalarken iki tür kopyalamamız vardır:

  1. Sığ Kopya (Shallow Copy) - yalnızca ilk seviyeyi kopyalar
  2. Derin Kopya (Deep Copy) - tüm iç içe geçmiş seviyeleri kopyalar

Sığ Kopyalama Yöntemleri:

Spread operatörü kullanımı:

const original = { a: 1, b: { x: 2 } };
const spreadCopy = { ...original };

Kaynak nesneden hedef nesneye özellikleri kopyalayarak yeni bir nesne oluşturan Object.assign() kullanımı:

const assignCopy = Object.assign({}, original);

Sığ Kopyalama (Shallow Copy) ile İlgili Sorun:

original.b.x = 3;
console.log(spreadCopy.b.x); // 3
// (iç içe geçmiş nesneler referansı paylaşır)

console.log(assignCopy.b.x); // 3

JSON Metotlarını ve Derin Kopyalamayı (Deep Copy) Anlamak

JSON.stringify() bir JavaScript nesnesini bir JSON dizesine dönüştürür:

const obj = { name: "John", age: 30 };
const jsonString = JSON.stringify(obj);
console.log(jsonString); // "{"name":"John","age":30}"

JSON.parse() bir JSON dizesini tekrar bir JavaScript nesnesine dönüştürür:

const backToObject = JSON.parse(jsonString);
console.log(backToObject); // { name: "John", age: 30 }

JSON kullanarak Derin Kopya:

const original = { a: 1, b: { x: 2 } };
const deepCopy = JSON.parse(JSON.stringify(original));

original.b.x = 3;
console.log(deepCopy.b.x); // 2 (tamamen bağımsız)
challenge icon

Görev

Kolay

Bir alışveriş sepetini temsil eden bir JSON string alan processCart adında bir fonksiyon oluşturun. Sepet, isimleri ve fiyatları olan bir ürün dizisi içerir. Göreviniz şunları yapmaktır:

  1. JSON string'ini bir JavaScript nesnesine dönüştürün (parse)
  2. Ondan İKİ ayrı sepet oluşturun
  3. İkinci sepette:
    1. Her öğeye false olarak ayarlanmış bir discounted özelliği ekleyin
    2. price değeri 50'den büyük olan tüm öğelere %10 indirim uygulayın
    3. İndirim alan öğeler için 'discounted' değerini true olarak ayarlayın
  4. Her iki sepeti de içeren bir dizi döndürün

Kopya kağıdı

Nesneleri kopyalarken iki tür kopyalamamız vardır:

  • Sığ Kopya (Shallow Copy) - yalnızca ilk seviyeyi kopyalar
  • Derin Kopya (Deep Copy) - tüm iç içe geçmiş seviyeleri kopyalar

Sığ Kopya Yöntemleri:

Spread operatörünü kullanma:

const original = { a: 1, b: { x: 2 } };
const spreadCopy = { ...original };

Object.assign() kullanma:

const assignCopy = Object.assign({}, original);

Sığ Kopya ile İlgili Sorun:

original.b.x = 3;
console.log(spreadCopy.b.x); // 3 (nested objects share reference)

JSON Yöntemleri:

JSON.stringify() JavaScript nesnesini JSON dizesine dönüştürür:

const obj = { name: "John", age: 30 };
const jsonString = JSON.stringify(obj);
console.log(jsonString); // "{"name":"John","age":30}"

JSON.parse() JSON dizesini tekrar JavaScript nesnesine dönüştürür:

const backToObject = JSON.parse(jsonString);
console.log(backToObject); // { name: "John", age: 30 }

JSON kullanarak Derin Kopya:

const original = { a: 1, b: { x: 2 } };
const deepCopy = JSON.parse(JSON.stringify(original));

original.b.x = 3;
console.log(deepCopy.b.x); // 2 (completely independent)

Kendin dene

function processCart(jsonString) {
    // Kodu buraya yazın
}
// Fonksiyonun dışına hiçbir şey yazmayın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler