การทำลายโครงสร้างใน JavaScript หมายถึงการคัดลอกค่าของอาร์เรย์หรือคุณสมบัติของวัตถุไปยังตัวแปร

การทำลายล้างไม่ได้หมายความถึงการทำลายล้าง ไม่ใช่กรณีนี้เนื่องจากอาร์เรย์หรือออบเจ็กต์ที่คุณสามารถคัดลอกค่าไม่ได้ถูกแก้ไข
นี่เป็นนิพจน์ JavaScript ที่นำมาใช้ใน ECMAScript 2015/16

ในบทความนี้ คุณจะได้เรียนรู้วิธีการทำลายโครงสร้างค่าในอาร์เรย์ คุณสมบัติในวัตถุ และการใช้งานอื่นๆ ในการทำลายโครงสร้าง

การทำลายโครงสร้างขั้นพื้นฐานในอาร์เรย์

การทำลายล้างทำให้เข้าถึงค่าของอาร์เรย์ได้ง่ายขึ้น
ตัวอย่างเช่น
หากคุณต้องการเข้าถึงค่าในอาร์เรย์โดยไม่ทำลายโครงสร้าง

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

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

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

ในตัวอย่างนี้ คุณกำหนดค่าโดยใช้ดัชนี แต่ด้วยการทำลายล้าง มันจะเป็นเช่นนี้

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

const [arr,arr1,arr2] = array;

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

ดังนั้นคุณจึงสามารถกำหนดค่าของตัวแปร array ให้กับตัวแปรใหม่ทั้งหมดพร้อมกันได้

การสลับค่า
ในอาร์เรย์ คุณสามารถสลับค่าในตัวแปรโดยการสลับตำแหน่ง โดยปกติแล้ว คุณจะต้องมีตัวแปรตัวที่สามเพื่อที่จะบรรลุเป้าหมายนี้

นี่คือตัวอย่าง:

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

แต่ด้วยการทำลายล้าง คุณสามารถทำได้โดยไม่ต้องมีตัวแปรตัวที่สาม

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

การข้ามค่า

คุณยังสามารถข้ามค่าเมื่อกำหนดค่าให้กับตัวแปรได้ คุณทำได้โดยการเพิ่มลูกน้ำพิเศษให้กับอาร์เรย์ที่คุณกำลังทำลายค่า เครื่องหมายจุลภาคระบุดัชนีของค่า

ในตัวอย่างนี้ เครื่องหมายจุลภาคที่จุดเริ่มต้นของการกำหนดจะระบุค่าแรกของอาร์เรย์

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

การใช้การทำลายโครงสร้างอาร์เรย์กับตัววนซ้ำ

การทำลายโครงสร้างอาร์เรย์ใช้ได้กับค่าที่สามารถทำซ้ำได้ทั้งหมด คุณสามารถทำลายโครงสร้างอาร์เรย์ค่าที่สามารถทำซ้ำได้ ตัวอย่างของ iterable เช่น สตริง เซต และอื่นๆ

ตัวอย่างเช่น การใช้การทำลายโครงสร้างอาร์เรย์บนสตริง

const [a,b] = "abc";

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

ตัวอย่างการใช้การทำลายอาเรย์กับเซต

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

การทำลายโครงสร้างอาร์เรย์ใช้ได้กับค่าที่ทำซ้ำได้เท่านั้น ค่าที่ไม่สามารถทำซ้ำได้จะทำให้เกิดข้อผิดพลาด ตัวอย่างของสิ่งที่ไม่สามารถทำซ้ำได้ถือเป็นโมฆะและไม่ได้กำหนดไว้

นอกจากนี้ จาวาสคริปต์จะส่งกลับไม่ได้กำหนดหากอาร์เรย์ที่คุณกำลังทำลายโครงสร้างว่างเปล่า

ตัวอย่างเช่น,

const [arr,arr1] = [];

console.log(arr);          //undefined

console.log(arr1);         //undefined

นี่เป็นอีกสถานการณ์หนึ่ง:

const array = [];

const [arr,arr1] = array;

console.log(arr);          //undefined

console.log(arr1);         //undefined

ค่าเริ่มต้นในอาร์เรย์

เมื่อเขียนโค้ด มีหลายกรณีที่คุณอาจไม่แน่ใจเกี่ยวกับค่าที่คุณกำหนด หากค่านั้นเป็น undefined คุณจะต้องมีค่าเริ่มต้น การทำลายล้างทำให้คุณสามารถกำหนดค่าเริ่มต้นให้กับอาร์เรย์ได้ง่ายขึ้น

ดูตัวอย่างนี้:

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

เพื่อกำหนดค่าเริ่มต้นให้กับ arr3

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

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

console.log(arr3);          //mirrors

ด้วยเหตุนี้ คุณจึงสามารถกำหนดค่าเริ่มต้นให้กับตัวแปรขณะกำลังทำลายโครงสร้างได้

การใช้ไวยากรณ์ที่เหลือ

การทำลายโครงสร้างใน Javascript ยังใช้ไวยากรณ์ที่เหลือด้วย มันถูกเรียกว่าไวยากรณ์ "ส่วนที่เหลือ" เนื่องจากครอบคลุมรายการที่เหลือในอาร์เรย์ ไวยากรณ์คือ ... ตามด้วยชื่อของอาร์เรย์ที่สร้างขึ้น ชื่อ “rest” ที่ปรากฏหลังจุดสามจุดเป็นทางเลือกหรือไม่ คุณสามารถใช้ชื่ออื่นหลังจุดสามจุดได้

ไวยากรณ์:
(...rest)

เมื่อใช้ไวยากรณ์ส่วนที่เหลือ ตรวจสอบให้แน่ใจว่าไวยากรณ์อยู่หลังรายการอื่นๆ เสมอ เนื่องจากอาจทำให้เกิดข้อผิดพลาดได้หากคุณดำเนินการอย่างอื่น

นี่คือตัวอย่างการพักในอาเรย์:

โดยใช้ตัวอย่างก่อนหน้านี้

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

const [arr, …newArr] = array;

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

อย่างที่คุณเห็น อาร์เรย์ newArr ถูกสร้างขึ้นจากอาร์เรย์เก่า

การทำลายล้างวัตถุ

ด้วยการทำลายโครงสร้างออบเจ็กต์ คุณสามารถดึงค่าคุณสมบัติจากออบเจ็กต์ได้ ออบเจ็กต์ใช้ไวยากรณ์ที่แตกต่างจากอาร์เรย์เมื่อกำหนดค่าให้กับตัวแปร

ในการกำหนดค่าโดยไม่ทำลายโครงสร้างจะเป็นดังนี้:

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

นี่คือวิธีการกำหนดค่าให้กับวัตถุโดยใช้การทำลายล้าง

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

ทำให้การมอบหมายคุณค่าง่ายขึ้น

หมายเหตุ: ลำดับไม่สำคัญในออบเจ็กต์ และคุณควรใช้ชื่อเดียวกัน

ซึ่งจะส่งผลให้เกิดข้อผิดพลาดดังต่อไปนี้:

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

เนื่องจาก JavaScript ไม่ได้เก็บตัวแปร words และ boolean ไว้เป็นข้อมูลอ้างอิงสำหรับออบเจ็กต์ ดังนั้นจึงเกิดข้อผิดพลาด

อย่างไรก็ตาม คุณสามารถตั้งชื่อที่แตกต่างกันให้กับค่าต่างๆ ได้ในขณะที่กำลังทำลายโครงสร้าง

การกำหนดชื่อที่แตกต่างกันให้กับคุณสมบัติของวัตถุ

คุณสามารถกำหนดชื่อที่แตกต่างกันให้กับคุณสมบัติของวัตถุเพื่อเข้าถึงได้

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

การใช้การทำลายโครงสร้างวัตถุบนอาร์เรย์
คุณสามารถใช้ดัชนีของอาร์เรย์เป็น “คุณสมบัติ” เมื่อคุณใช้การทำลายโครงสร้างวัตถุกับอาร์เรย์

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

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

การประกาศตัวแปรเบื้องต้น

ในออบเจ็กต์ คุณสามารถประกาศตัวแปรตั้งแต่แรกก่อนที่คุณจะกำหนดค่าให้กับตัวแปรนั้น

let word;

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

({ word } = obj);

console.log(word);   //dataTypes

หมายเหตุ: ในระหว่างที่ได้รับมอบหมาย ให้ใช้วงเล็บ มิฉะนั้น JavaScript จะมองว่าเป็นฟังก์ชันบล็อกและส่งกลับข้อผิดพลาดทางไวยากรณ์

การใช้ไวยากรณ์ส่วนที่เหลือในวัตถุ

คุณสามารถใช้ไวยากรณ์ส่วนที่เหลือในวัตถุได้ เช่นเดียวกับในอาร์เรย์ ไวยากรณ์ที่เหลือจะมาที่ส่วนท้ายและครอบคลุมคุณสมบัติที่เหลืออยู่ในวัตถุ

นี่คือตัวอย่าง:

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 }

หมายเหตุ:
เช่นเดียวกับในอาร์เรย์ javascript จะส่งกลับ undefined เมื่อตั้งค่าให้ทำลายโครงสร้างวัตถุว่าง การทำลายโครงสร้างวัตถุจะส่งกลับข้อผิดพลาดประเภทเมื่อค่าเป็น undefined และ null

ค่าเริ่มต้นในวัตถุ

ในออบเจ็กต์ คุณสามารถกำหนดค่าเริ่มต้นให้กับตัวแปรเมื่อทำการทำลายโครงสร้าง หากคุณสมบัติไม่อยู่ในวัตถุ คุณสามารถสร้างตัวแปรและกำหนดค่าเริ่มต้นให้กับมันได้

ตัวอย่างเช่น,

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

ในตัวอย่างนี้ ค่าเริ่มต้น street ถูกกำหนดให้กับตัวแปร str ขณะกำลังทำลายโครงสร้าง

สรุป

ซึ่งสรุปคุณสมบัติหลักของการทำลายล้างใน JavaScript ฉันหวังว่าคุณจะได้เรียนรู้บางอย่างจากสิ่งนี้ หากคุณชอบผลงานชิ้นนี้ คุณสามารถแชร์กับเพื่อนหรือแสดงความคิดเห็นได้ ขอบคุณที่อ่าน
ต้องการข้อมูลเพิ่มเติมหรือไม่ ลองอ่านคู่มือนี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับ การทำลายล้างในจาวาสคริปต์