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:
- Sığ Kopya - yalnızca ilk düzeyi kopyalar
- 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); // 3JSON 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)Görev
KolayprocessCart 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:
- JSON dizesini bir JavaScript nesnesine ayrıştırmak
- Bu nesneden İKİ ayrı sepet oluşturmak
- İkinci sepette:
- Her öğeye
discountedözelliğini ekleyip false olarak ayarlamak pricedeğeri 50'den büyük olan tüm öğelere %10 indirim uygulamak- İndirimi alan öğeler için 'discounted' değerini true olarak ayarlamak
- Her öğeye
- Her iki sepeti içeren bir dizi döndürmek
Kendin dene
function processCart(jsonString) {
// Kodu buraya yaz
}
// Fonksiyonun dışına hiçbir şey yazmaBu 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
1Derinlemesine Stringler
String TemelleriString Üzerinde YinelemeTemplate LiteralsString MetotlarıÖzet - String Weaver4JSON Bölüm 2
JSON Üzerinde Yinelemeİç İçe Geçmiş JSONJSON Optional ChainingSığ ve Derin KopyalamaÖzet - Bisiklet MağazasıÖzet - Güneş Sistemi7Kütüphane Yönetim Sistemi
Projeye Genel BakışKitap Ekleme10Festival Sistemi Yönetimi
Projeye Genel BakışFilm ve Mekan Ekle2Çok Boyutlu Diziler
2D Dizi Temelleri2D Dizi Elemanlarına Erişme2D Dizilerle İç İçe DöngülerÖzet - 2D DizilerMatris Toplama ve ÇıkarmaDüzensiz Diziler3D Diziler ve ÖtesiYaygın 2D Dizi DesenleriÖzet - Diziler Hakkında Her Şey5Kümeler Bölüm 1
Küme Nedir?Kümeler Üzerinde YinelemeEleman EklemeEleman SilmeEleman Varlığını Kontrol EtmeBoyut ve Boş Olma DurumuKopyalama ve TemizlemeÖzet - Kümelerin Temelleri8Diziler: İlginç Konular
Dizi Yapı SökümüDizilerde Spread SözdizimiSeyrek DizilerÖzet - Diziler Workshop3JSON Bölüm 1
JSON Nedir?Anahtarın Varlığını Kontrol EtmeNesne MetotlarıSpread Operatörü Bölüm 1Spread Operatörü Bölüm 2Anahtarları KaldırmaÖzet - JSON Anahtarlarını YönetmeKendi başına pratik yap: Online JavaScript derleyicisi