Salinan Dangkal dan Mendalam
Termasuk bagian Logika dan Alur dalam perjalanan JavaScript di Coddy. Pelajaran 25 dari 65.
Saat menyalin object, ada dua jenis salinan:
- Salinan dangkal, hanya menyalin tingkat pertama
- Salinan mendalam, menyalin semua tingkat bersarang
Metode Penyalinan Dangkal:
Menggunakan operator spread:
const original = { a: 1, b: { x: 2 } };
const spreadCopy = { ...original };Menggunakan Object.assign() yang membuat object baru dengan menyalin property dari object sumber ke object target:
const assignCopy = Object.assign({}, original);Masalah dengan shallow copy:
original.b.x = 3;
console.log(spreadCopy.b.x); // 3
// (object bersarang berbagi referensi yang sama)
console.log(assignCopy.b.x); // 3Memahami Method JSON & Salinan Mendalam
JSON.stringify() mengubah object JavaScript menjadi string JSON:
const obj = { name: "John", age: 30 };
const jsonString = JSON.stringify(obj);
console.log(jsonString); // "{"name":"John","age":30}"JSON.parse() mengubah string JSON kembali menjadi object JavaScript:
const backToObject = JSON.parse(jsonString);
console.log(backToObject); // { name: "John", age: 30 }Penyalinan mendalam menggunakan JSON:
const original = { a: 1, b: { x: 2 } };
const deepCopy = JSON.parse(JSON.stringify(original));
original.b.x = 3;
console.log(deepCopy.b.x); // 2 (sepenuhnya independen)Tantangan
MudahBuat fungsi bernama processCart yang menerima string JSON yang merepresentasikan keranjang belanja. Keranjang tersebut berisi array produk dengan nama dan harga. Tugasmu adalah:
- Parse string JSON menjadi object JavaScript
- Buat DUA keranjang terpisah dari data tersebut
- Pada keranjang kedua:
- Tambahkan property
discountedke setiap item dengan nilai false - Terapkan diskon 10% pada semua item yang memiliki
pricelebih besar dari 50 - Atur 'discounted' menjadi true untuk item yang menerima diskon
- Tambahkan property
- Kembalikan array yang berisi kedua keranjang
Coba sendiri
function processCart(jsonString) {
// Tulis kodemu di sini
}
// Jangan tulis apa pun di luar fungsiPelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami string
Dasar-dasar stringIterasi pada stringTemplate LiteralsMethod stringRangkuman: Perangkai string4JSON Bagian 2
Menelusuri JSONJSON BersarangOptional Chaining pada JSONSalinan Dangkal dan MendalamUlasan: Toko SepedaUlasan: Tata Surya7Sistem Manajemen Perpustakaan
Ikhtisar ProyekMenambahkan Buku2Array Multidimensi
Dasar-Dasar Array 2DMengakses Elemen Array 2DLoop Bersarang dengan Array 2DRingkasan: Array 2DPenjumlahan dan Pengurangan MatriksArray BergerigiArray 3D dan SeterusnyaPola Umum Array 2DRingkasan: Semua tentang Array5set Bagian 1
Apa Itu set?Melakukan Perulangan pada setMenambahkan ElemenMenghapus ElemenMemeriksa Apakah Elemen AdaUkuran dan Apakah KosongMenyalin dan MengosongkanRangkuman: Dasar-Dasar set8Topik Menarik tentang array
Membongkar arraySintaks spread pada arrayArray renggangRekap: Lokakarya arrayLatihan sendiri: Compiler JavaScript online