Menu
CoddyTech

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:

  1. Salinan dangkal, hanya menyalin tingkat pertama
  2. 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); // 3

Memahami 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)
challenge icon

Tantangan

Mudah

Buat fungsi bernama processCart yang menerima string JSON yang merepresentasikan keranjang belanja. Keranjang tersebut berisi array produk dengan nama dan harga. Tugasmu adalah:

  1. Parse string JSON menjadi object JavaScript
  2. Buat DUA keranjang terpisah dari data tersebut
  3. Pada keranjang kedua:
    1. Tambahkan property discounted ke setiap item dengan nilai false
    2. Terapkan diskon 10% pada semua item yang memiliki price lebih besar dari 50
    3. Atur 'discounted' menjadi true untuk item yang menerima diskon
  4. Kembalikan array yang berisi kedua keranjang

Coba sendiri

function processCart(jsonString) {
    // Tulis kodemu di sini
}
// Jangan tulis apa pun di luar fungsi
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler JavaScript online