Destrukturisasi dalam JavaScript berarti menyalin nilai array atau properti objek ke variabel.

Destrukturisasi tidak berarti kehancuran. Hal ini tidak terjadi karena array atau objek tempat Anda dapat menyalin nilainya tidak diubah.
Ini adalah ekspresi JavaScript yang diperkenalkan di ECMAScript 2015/16.

Dalam artikel ini, Anda akan mempelajari cara mendestrukturisasi nilai dalam array, properti dalam objek, dan kegunaan destrukturisasi lainnya.

Destrukturisasi dasar dalam array

Destrukturisasi mempermudah akses terhadap nilai array.
Misalnya,
Jika Anda ingin mengakses nilai dalam array tanpa melakukan destrukturisasi,

const array = ["deer","greet","heyy"];

const arr = array[0];
const arr1 = array[1];

console.log(arr);                //deer
console.log(arr1);              //greet

Dalam contoh ini, Anda menetapkan nilai dengan menggunakan indeksnya. Namun dengan adanya destrukturisasi, hal inilah yang akan terjadi.

const array = ["deer","greet","heyy"];

const [arr,arr1,arr2] = array;

console.log(arr);                 //deer
console.log(arr1);               //greet

Jadi, Anda dapat menetapkan nilai variabel array ke variabel baru secara bersamaan.

Menukar nilai
Dalam array, Anda dapat menukar nilai dalam variabel dengan berpindah tempat. Biasanya, Anda memerlukan variabel ketiga untuk mencapai hal ini.

Berikut ini contohnya:

let arr = "deer";
let arr1 = "greet";

console.log(arr);               //deer
console.log(arr1);             //greet

let newArr = arr1;   //assigning the value
"greet" to a new variable "newArr" 

console.log(newArr);          //greet

arr1 = arr;           //assigning the value "deer" to the variable "arr1"

arr = newArr;        //assigning the value "greet" to the variable "arr"

console.log(arr1);           //deer
console.log(arr);            //greet

Namun dengan destrukturisasi, Anda dapat melakukannya tanpa variabel ketiga.

const array = ["deer","greet","heyy"];

let [arr,arr1,arr2] = array;

console.log(arr);                //deer
console.log(arr1);             //greet

[arr,arr1] = [arr1,arr];        //using destructuring to swap the values 

console.log(arr);               //greet
console.log(arr1);             //deer

Melewatkan Nilai

Anda juga bisa melewatkan nilai saat memberikan nilai ke variabel. Anda melakukannya dengan menambahkan koma ekstra ke array yang nilainya akan dirusak. Koma menunjukkan indeks nilai.

Dalam contoh ini, koma di awal tugas menunjukkan nilai pertama array.

const array = ["deer","greet","heyy"];

const [,arr1,arr2] = array;             //skipping the first value and using only the second and third

console.log(arr1);              //greet
console.log(arr2);              //heyy

Menggunakan penghancuran array dengan iterator

Penghancuran array berfungsi pada semua nilai yang dapat diubah. Anda dapat menghancurkan struktur nilai apa pun yang dapat diubah. Contoh dari iterable tersebut adalah string, set, dan sebagainya.

Misalnya, menggunakan destrukturisasi array pada sebuah string,

const [a,b] = "abc";

console.log(a);         //a
console.log(b);        //b

contoh penggunaan destrukturisasi array pada suatu himpunan,

const array = ["deer","greet","heyy"];

const exampleSet = new Set(array);

const [arr,arr1,arr2] = exampleSet;

console.log(arr);         //deer
console.log(arr1);        //greet
console.log(arr2);        //heyyy

Penghancuran array hanya berfungsi pada nilai yang dapat diubah. Nilai yang tidak dapat diubah akan memberikan kesalahan. Contoh non-iterable adalah null dan tidak terdefinisi.

Selain itu, javascript akan mengembalikan tidak terdefinisi jika array yang Anda hancurkan kosong.

Misalnya,

const [arr,arr1] = [];

console.log(arr);          //undefined

console.log(arr1);         //undefined

Berikut skenario lainnya:

const array = [];

const [arr,arr1] = array;

console.log(arr);          //undefined

console.log(arr1);         //undefined

Nilai default dalam array

Saat menulis kode, ada kalanya Anda mungkin tidak yakin dengan nilai yang Anda tetapkan. Jika nilainya adalah undefined, Anda memerlukan nilai default. Destrukturisasi memudahkan Anda menetapkan nilai default ke array.

Lihat contoh ini:

const array = ["deer","greet","heyy"];

const [arr,arr1,arr2,arr3] = array;

console.log(arr);              //word
console.log(arr1);            //fang
console.log(arr2);           //grey
console.log(arr3);           //undefined

Untuk menetapkan nilai default ke arr3

const array = ["deer","greet","heyy"];

//To assign a default value to arr3
const [arr,arr1,arr2,arr3="mirrors"] = array;

console.log(arr3);          //mirrors

Dengan itu, Anda dapat menetapkan nilai default ke variabel saat melakukan destrukturisasi.

Menggunakan sintaks lainnya

Penghancuran dalam Javascript juga menggunakan sintaksis lainnya. Ini disebut sintaks “sisanya” karena mencakup sisa item dalam array. Sintaksnya adalah ... lalu nama array yang dibuat. Nama “istirahat” yang muncul setelah tiga titik adalah opsional. Anda bisa menggunakan nama lain setelah tiga titik.

Sintaks:
(...rest)

Saat menggunakan sintaksis sisanya, selalu pastikan sintaksis tersebut berada di urutan terakhir setelah item lainnya, karena akan memberikan kesalahan jika Anda melakukan sebaliknya.

Berikut ini contoh istirahat dalam sebuah array:

Menggunakan contoh sebelumnya,

const array = ["deer","greet","heyy"];

const [arr, …newArr] = array;

console.log(arr);               //deer
console.log(newArr);          //[ greet, heyy]

Seperti yang Anda lihat, array newArr dibuat dari array lama.

Penghancuran objek

Dengan penghancuran objek, Anda dapat mengambil nilai properti dari suatu objek. Objek mengambil sintaks yang berbeda dari array ketika memberikan nilai ke variabel.

Untuk menetapkan nilai tanpa merusak struktur adalah:

const obj = { word: "dataTypes", num: 0001, bool: true, bigInt: 2.99999999};             //example of the object

//To access the object property

const words = obj.word;              

const boolean = obj.bool;                     

console.log(words)             //dataTypes
console.log(boolean)          //true

Ini adalah cara memberikan nilai pada objek menggunakan destrukturisasi.

const obj = { word: "dataTypes", num: 0001, bool: true, bigInt: 2.99999999};            //example of the object//To access the object property
const { word, bool } = obj;                   

console.log(word)       //dataTypes
console.log(bool)      //true

Hal ini membuat penetapan nilai menjadi lebih mudah.

Catatan: Urutan objek tidak menjadi masalah, dan Anda harus menggunakan nama yang sama.

Hal ini akan mengakibatkan kesalahan berikut:

const obj = { word: "dataTypes", num: 0001, bool: true, bigInt: 2.99999999};

const { words, boolean } = obj;

console.log(words)           
console.log(boolean)       

//ReferenceError: obj is not defined

Ini karena JavaScript tidak menyimpan variabel words dan boolean sebagai referensi untuk objek, sehingga terjadi kesalahan.

Namun, Anda dapat menetapkan nama yang berbeda ke nilai saat melakukan destrukturisasi.

Menetapkan nama berbeda pada properti objek

Anda dapat menetapkan nama berbeda ke properti objek untuk mengaksesnya.

const obj = { word: "dataTypes", num: 0001, bool: true, bigInt: 2.99999999};

const { word: words, bool: boolean } = obj;

console.log(words)               //dataTypes
console.log(boolean)           //true

Menggunakan penghancuran objek pada array
Anda dapat menggunakan indeks array sebagai “properti” ketika Anda menerapkan penghancuran objek pada array.

const {0:arr, 1:arr1, 2:arr2} = ["deer","greet","heyy"];

console.log(arr);          //deer
console.log(arr2);         //heyy

Deklarasi awal variabel

Dalam objek, Anda bisa mendeklarasikan variabel terlebih dahulu sebelum Anda memberikan nilai padanya.

let word;

const obj = { word: "dataTypes", num: 0001, bool: true, bigInt: 2.99999999 };

({ word } = obj);

console.log(word);   //dataTypes

Catatan: selama penugasan, gunakan tanda kurung, atau JavaScript akan melihatnya sebagai fungsi blok dan mengembalikan kesalahan sintaksis.

Menggunakan sintaksis lainnya pada objek

Anda bisa menggunakan sintaks lainnya dalam suatu objek. Seperti dalam array, sintaksis lainnya berada di akhir dan mencakup properti yang tersisa dalam suatu objek.

Berikut ini contohnya:

const obj = { word: "dataTypes", num: 0001, bool: true, bigInt: 2.99999999};            //example of the object//To access the object property

const { word: words, ...others } = obj;                   

console.log(words);              //dataTypes
console.log(others);            //{ num:0001, bool:true, bigInt:2.99999999 }

Catatan:
Seperti dalam array, javascript akan mengembalikan undefined ketika diatur untuk merusak struktur objek kosong. Penghancuran objek akan mengembalikan kesalahan tipe ketika nilainya undefined dan null.

Nilai default pada objek

Dalam sebuah objek, Anda dapat menetapkan nilai default ke variabel saat melakukan destrukturisasi. Jika properti tidak ada dalam objek, Anda dapat membuat variabel dan menetapkan nilai default padanya.

Misalnya,

const obj = { word: "dataTypes", num: 0001, bool: true, bigInt: 2.99999999, };            //example of the objec//To access the object property

const { word, bool, num, str="street" } = obj;                   

console.log(word);             //dataTypes
console.log(str);              //street

Dalam contoh ini, nilai default street ditetapkan ke variabel str saat melakukan destrukturisasi.

Ringkasan

Itu merangkum fitur utama destrukturisasi dalam JavaScript. Saya harap Anda belajar sesuatu dari ini. Jika Anda menyukai karya ini, Anda dapat membagikannya dengan teman atau memberikan komentar. Terima kasih telah membaca.
Butuh informasi lebih lanjut? Lihat panduan ini untuk mengetahui lebih lanjut tentang destrukturisasi dalam javascript.