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:
- 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 aynı referansı paylaşır)
console.log(assignCopy.b.x); // 3JSON 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)Görev
KolayAlış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:
- JSON dizesini bir JavaScript nesnesine ayrıştırmak
- Bu dizgeden BİRBİRİNDEN AYRI iki sepet oluşturmak
- İkinci sepette:
- Her öğeye değeri false olan bir
discountedözelliği eklemek pricedeğeri 50'den büyük olan tüm öğelere %10 indirim uygulamak- İndirim alan öğeler için 'discounted' değerini true olarak ayarlamak
- Her öğeye değeri false olan bir
- 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ınBu 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
1Dizeleri Derinlemesine İnceleme
Dize TemelleriDizeler Üzerinde YinelemeŞablon DizeleriDize MetotlarıTekrar - Dize Dokuyucu4JSON Bölüm 2
JSON Üzerinde Döngü Kurmaİç İçe JSONJSON İsteğe Bağlı ZincirlemeYüzeysel ve Derin KopyaTekrar - Bisikletçi DükkânıTekrar - Güneş Sistemi7Kütüphane Yönetim Sistemi
Projeye Genel BakışKitap Ekleme10Festival Sistemini Yönet
Proje Genel BakışıFilmler ve Mekanlar Ekle2Çok Boyutlu Diziler
2 Boyutlu Dizilerin Temelleri2 Boyutlu Dizi Elemanlarına Erişim2 Boyutlu Dizilerle İç İçe DöngülerTekrar - 2 Boyutlu DizilerMatris Toplama ve ÇıkarmaDüzensiz Diziler3 Boyutlu Diziler ve ÖtesiYaygın 2 Boyutlu Dizi KalıplarıTekrar - Diziler Hakkında Her Şey5Kümeler Bölüm 1
Küme Nedir?Kümeler Üzerinde YinelemeBir Eleman EklemeBir Elemanı KaldırmaBir Elemanın Var Olup Olmadığını Kontrol EtmeBoyut ve Boş Olma DurumuKopyalama ve TemizlemeÖzet - Kümelerin Temelleri8Dizilerle İlgili İlginç Konular
Dizi DestructuringDizilerde Spread SözdizimiSeyrek DizilerTekrar - Diziler Atölyesi3JSON Bölüm 1
JSON nedir?Anahtarın Var Olup Olmadığını Kontrol EtmeNesne MetotlarıSpread Operatörü Bölüm 1Spread Operatörü Bölüm 2Anahtarları KaldırmaTekrar - JSON Anahtarlarını İşlemeKendi başına pratik yap: Online JavaScript derleyicisi