Kodealgo

Array CopyWithin JavaScript: Sintaks dan Contoh Penggunaan

Method copyWithin melakukan penyalinan dangkal (shallow copy) bagian array ke lokasi (indeks) lain dalam array yang sama dan mengembalikan hasilnya tanpa memodifikasi panjang array.

Jika Anda ingin menyalin dan menggeser atau menimpa posisi elemen array dengan kinerja tinggi, method ini bisa menjadi solusi.

Pasalnya, copyWithin bekerja seperti fungsi memmove di C dan C++. Method ini mengubah array sumber.

Mari kita pelajar lebih lanjut mulai dari sintaks hingga contoh penggunaannya.

  1. Sintaks
  2. Contoh
    1. Menggunakan target
    2. Menggunakan target dan start
    3. Menggunakan target, start, dan end

Sintaks

copyWithin(target, start, end);

Parameter

  • target: indeks berbasis nol untuk menyalin urutan atau menentukan ke indeks berapa elemen yang disalin ditempatkan.
  • start (opsional): indeks elemen pertama yang akan disalin, default 0.
  • end (opsional): indeks elemen yang menjadi batas penyalinan start, elemen yang berada tepat di indeks end tidak ikut disalin, default sesuai panjang array (arr.length).

Nilai Kembalian

Mengembalikan array yang telah dimodifikasi.

Contoh

Menggunakan target

Mari kita lihat contoh penggunaan target tanpa menentukan start dan end.

const arr = ['a', 'b', 'c', 'd', 'e'];

arr.copyWithin(2);

console.log(arr); // [ 'a', 'b', 'a', 'b', 'c' ]

Begini cara kerjanya:

  1. Karena kita tidak menentukan start dan end maka semua elemen akan disalin, jadi ini dia: 'a', 'b', 'c', 'd', 'e'.
  2. Di sini kita menentukan target 2, jadi tempatkan semua elemen yang disalin tadi mulai dari indeks 2 (setelah b) dari array sumber, maka ini hasilnya [ 'a', 'b', 'a', 'b', 'c', 'd', 'e'].
  3. Karena hasilnya melebihi panjang array asli, jadi pangkas array tersebut agar sesuai dengan panjang array asli, maka ini hasilnya [ 'a', 'b', 'a', 'b', 'c' ].

Menggunakan target dan start

Mari kita lihat bagaimana hasilnya jika kita menentukan target dan start.

Jika kita menentukan start maka elemen yang disalin tidak lagi dari elemen pertama, melainkan elemen yang berada tepat di indeks start, sampai akhir elemen karena di sini kita tidak menentukan end.

Mari kita lihat contoh berikut.

const arr2 = ['a', 'b', 'c', 'd', 'e'];

arr2.copyWithin(2, 1);

console.log(arr2); // [ 'a', 'b', 'b', 'c', 'd' ]

Begini cara kerjanya:

  1. Salin elemen mulai dari indeks 1 (start) sampai elemen terakhir, ini dia: 'b', 'c', 'd', 'e'.
  2. Tempatkan semua elemen tersebut tepat ke indeks 2 (target), setelah b, ini hasilnya: ['a', 'b', 'b', 'c', 'd', 'e'].
  3. Karena hasilnya melebihi panjang array asli, pangkas array tersebut agar sesuai panjang array asli, maka hasilnya: ['a', 'b', 'b', 'c', 'd'].

Menggunakan target, start, dan end

Kali ini kita menentukan indeks end, artinya penyalinan elemen tidak lagi sampai elemen terakhir melainkan sampai elemen yang berada tepat sebelum index end.

Mari kita lihat contoh berikut.

const arr3 = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];

arr3.copyWithin(1, 2, 5);

console.log(arr3); // [ 'a', 'c', 'd', 'e', 'e', 'f', 'g' ]

Begini cara kerjanya:

  1. Salin elemen mulai dari indeks 2 (start), c, sampai elemen yang berada tepat sebelum indeks 5 (end), e, maka ini dia: 'c', 'd', 'e'.
  2. Tempatkan semua elemen tersebut ke indeks 1 (target), setelah a, jika ada elemen yang berada tepat di indeks 1 dan seterusnya sesuai panjang array yang disalin maka timpa elemen tersebut, maka hasilnya: [ 'a', 'c', 'd', 'e', 'e', 'f', 'g' ].

Yang perlu diperhatikan disini, ketika kita menentukan end, elemen tidak lagi digeser ke kanan. Elemen start hingga end bukan dipindahkan, tapi disalin.