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.
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, default0.end(opsional): indeks elemen yang menjadi batas penyalinanstart, elemen yang berada tepat di indeksendtidak 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:
- Karena kita tidak menentukan
startdanendmaka semua elemen akan disalin, jadi ini dia:'a', 'b', 'c', 'd', 'e'. - Di sini kita menentukan target
2, jadi tempatkan semua elemen yang disalin tadi mulai dari indeks2(setelahb) dari array sumber, maka ini hasilnya[ 'a', 'b', 'a', 'b', 'c', 'd', 'e']. - 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:
- Salin elemen mulai dari indeks
1(start) sampai elemen terakhir, ini dia:'b', 'c', 'd', 'e'. - Tempatkan semua elemen tersebut tepat ke indeks
2(target), setelahb, ini hasilnya:['a', 'b', 'b', 'c', 'd', 'e']. - 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:
- Salin elemen mulai dari indeks
2(start),c, sampai elemen yang berada tepat sebelum indeks5(end),e, maka ini dia:'c', 'd', 'e'. - Tempatkan semua elemen tersebut ke indeks
1(target), setelaha, jika ada elemen yang berada tepat di indeks1dan 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.