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 kopyamız vardır:

  1. Sığ Kopya - yalnızca ilk düzeyi kopyalar
  2. Derin Kopya - iç içe geçmiş tüm düzeyleri kopyalar

Sığ Kopyalama Yöntemleri:

Yayma operatörünü kullanarak:

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

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

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

Ö sığ kopyayla ilgili sorun:

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

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

JSON Yöntemlerini ve Derin Kopyalamayı Anlama

JSON.stringify(), bir 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(), bir JSON dizesini yeniden bir JavaScript nesnesine dönüştürür:

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

JSON kullanarak Derin Kopyalama:

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

processCart adlı ve alışveriş sepetini temsil eden bir JSON dizesi alan bir işlev oluştur. Sepet, adları ve fiyatları olan bir ürün dizisi içerir. Görevin:

  1. JSON dizesini bir JavaScript nesnesine ayrıştırmak
  2. Bu nesneden İKİ ayrı sepet oluşturmak
  3. İkinci sepette:
    1. Her öğeye discounted özelliğini ekleyip false olarak ayarlamak
    2. price değeri 50'den büyük olan tüm öğelere %10 indirim uygulamak
    3. İndirimi alan öğeler için 'discounted' değerini true olarak ayarlamak
  4. Her iki sepeti içeren bir dizi döndürmek

Kendin dene

function processCart(jsonString) {
    // Kodu buraya yaz
}
// Fonksiyonun dışına hiçbir şey yazma
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

Kendi başına pratik yap: Online JavaScript derleyicisi