Menu
CoddyTech

Yüzeysel ve Derin Kopya

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 aynı referansı paylaşır)

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

JSON Yöntemlerini ve Derin Kopyalamayı Anlama

JSON.stringify(), bir JavaScript nesnesini JSON dizgesine 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 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

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

  1. JSON dizesini bir JavaScript nesnesine ayrıştırmak
  2. Bu dizgeden BİRBİRİNDEN AYRI iki sepet oluşturmak
  3. İkinci sepette:
    1. Her öğeye değeri false olan bir discounted özelliği eklemek
    2. price değeri 50'den büyük olan tüm öğelere %10 indirim uygulamak
    3. İndirim 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ı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

Kendi başına pratik yap: Online JavaScript derleyicisi