วิธีใช้ชุดใน JavaScript
คุณมีรายการข้อมูลที่ควรมีเฉพาะค่าที่ไม่ซ้ำหรือไม่? นี่คือที่ที่ประเภทข้อมูลชุด JavaScript ส่องแสงจริงๆ เป็นวัตถุประเภทใหม่ที่ช่วยให้คุณสามารถสร้างคอลเลกชันของค่าที่ไม่ซ้ำกัน ไม่อนุญาตให้ทำซ้ำภายในชุด
ในคู่มือนี้ เราจะพูดถึงว่าชุดคืออะไร วิธีทำงาน และเมื่อใดจะมีประโยชน์ เราจะอธิบายตัวอย่างบางส่วนของวิธีการตั้งค่าที่มีอยู่ใน JavaScript
เซตคืออะไร
ชุดคือชุดของค่าที่ไม่สามารถมีรายการซ้ำกันได้ ชนิดข้อมูลนี้ถูกนำมาใช้ใน ECMAScript 6 โดยเฉพาะอย่างยิ่ง ชุด เป็นคุณลักษณะของภาษาโปรแกรมอื่นๆ มากมาย
รายการมีประโยชน์เพราะช่วยให้คุณเก็บค่าได้หลายค่า รายการรองรับการจัดเก็บค่าที่ซ้ำกัน ซึ่งอาจมีประโยชน์ในสถานการณ์มากมาย
ตัวอย่างเช่น หากคุณกำลังจัดเก็บรายการคำสั่งซื้อที่ร้านกาแฟ คุณจะต้องสามารถเก็บค่าที่ซ้ำกัน ลูกค้าสองคนสามารถสั่งเครื่องดื่มชนิดเดียวกันได้
มีบางกรณีที่คุณต้องการเก็บเฉพาะค่าที่ไม่ซ้ำในรายการ นั่นคือสิ่งที่คุณต้องการใช้ Set object ค่าในชุดสามารถปรากฏได้เพียงครั้งเดียว
ใน JavaScript ชุดจะถูกประกาศเหมือนกับวัตถุอื่นๆ มาสร้างชุดที่จัดเก็บรายการเค้กที่ชื่นชอบที่รายงานโดยลูกค้าที่โรงน้ำชาในท้องถิ่นกันเถอะ:
let cakes = new Set(); console.log(cakes)
รหัสของเราส่งคืน:Set []
. เราเพิ่งสร้างชุด ขณะนี้ไม่มีค่าใด ๆ ดังที่คุณเห็นจากผลลัพธ์ของโค้ดของเรา เราจะเพิ่มสิ่งเหล่านั้นในครั้งต่อไป
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
เริ่มต้นชุดที่มีค่าเริ่มต้น
ชุดสามารถเริ่มต้นได้จากอาร์เรย์ สตริง หรือแบบวนซ้ำอื่นได้ สิ่งนี้มีประโยชน์เพราะหมายความว่าคุณไม่จำเป็นต้องเพิ่มค่าลงในชุดด้วยตนเอง คุณสามารถทำงานจากที่มีอยู่
พิจารณารายการต่อไปนี้:
let cake_list = ["Lemon Cake", "Carrot Cake", "Strawberry Cheesecake"];
ค่าเหล่านี้ถูกเก็บไว้ในอาร์เรย์ ในการแปลงเป็น Set เราสามารถส่งอาร์เรย์ของเราเมื่อเราสร้าง Set object ใหม่:
let cakes = new Set(cake_list); console.log(cakes)
รหัสของเราส่งคืน:
Set(3) ["Lemon Cake", "Carrot Cake", "Strawberry Cheesecake"]
การเพิ่มมูลค่าให้กับชุด
Set object มาพร้อมกับ method ที่เรียกว่า add()
ซึ่งทำให้ง่ายต่อการเพิ่มรายการลงในชุด ชื่อของเมธอดที่ใช้ในการเพิ่มรายการไปยังชุดนั้นง่ายต่อการจดจำ:add()
.
สมมติว่าเราต้องการเพิ่ม “บอสตันครีมพาย” ในรายการเค้กที่ขายในร้านเบเกอรี่ในท้องถิ่น มาใช้ add()
. กันเถอะ วิธีการเพิ่มค่านี้:
cakes.add("Boston Cream Pie"); console.log(cakes);
รหัสของเราส่งคืน:
Set(4) ["Lemon Cake", "Carrot Cake", "Strawberry Cheesecake", "Boston Cream Pie"]
ชุดของเราตอนนี้มีสี่วัตถุ หากคุณพยายามเพิ่มรายการที่อยู่ในชุดแล้ว รายการนั้นจะไม่ถูกเพิ่ม ชุดไม่สามารถเก็บค่าที่ซ้ำกันได้
ตรวจสอบว่ามีค่าอยู่ในชุดหรือไม่
เราจำเป็นต้องตรวจสอบว่า “บอสตันครีมพาย” อยู่ในรายการเค้กของเราหรือไม่ เป็นรายการเค้กที่เพิ่มเข้ามาใหม่ และคนทำขนมปังต้องการตรวจสอบอีกครั้งว่าเราได้เพิ่มเข้าไปแล้ว
นั่นคือที่ที่ has()
เมธอดเข้ามา has()
วิธีช่วยให้คุณตรวจสอบเพื่อดูว่าชุด มี ค่าเฉพาะ อีกครั้ง วิธีการนี้มีชื่อที่จำง่าย!
พิจารณารหัสต่อไปนี้:
var has_boston_cream_pie = cakes.has("Boston Cream Pie"); console.log(has_boston_cream_pie);
รหัสของเราส่งคืน:true
. has()
วิธีคืนค่าบูลีน—จริงหรือเท็จ—ขึ้นอยู่กับว่าชุดมีค่าใดค่าหนึ่ง วิธีนี้คล้ายกับ includes()
ที่คุณจะใช้กับอาร์เรย์ แต่ has()
ใช้ได้กับชุดเท่านั้น
การลบค่าออกจากชุด
คนทำขนมปังตัดสินใจว่าจะไม่เสิร์ฟชีสเค้กสตรอเบอร์รี่ที่ร้านเบเกอรี่อีกต่อไป สตรอว์เบอร์รี่ชีสเค้กใช้เวลาทำนานกว่าเค้กอื่นๆ และไม่ได้รับความนิยมมากนัก
คุณสามารถลบค่าออกจากชุดโดยใช้ชื่อ delete()
กระบวนการ. มาลบค่า “Strawberry Cheesecake” ออกจาก Set กัน:
cakes.delete("Strawberry Cheesecake"); console.log(cakes);
รหัสของเราส่งคืน:
Set(3) ["Lemon Cake", "Carrot Cake", "Boston Cream Pie"]
สตรอเบอรี่ชีสเค้กถูกลบออกจากชุดของเรา
คุณสามารถลบค่าทั้งหมดออกจากชุดโดยใช้ clear()
วิธีการ
วนซ้ำในเซ็ต
ชุด เช่น รายการ เป็นอ็อบเจ็กต์ที่ทำซ้ำได้ คุณรู้ว่านั่นหมายถึงอะไร:คุณสามารถทำซ้ำได้
เราจะใช้ for-each loop เพื่อวนซ้ำชุดเค้กของเรา for-each loop ของเราจะตรวจสอบทุกรายการในรายการของเรา—สำหรับแต่ละรายการในรายการ—และพิมพ์ไปที่คอนโซล:
cakes.forEach(cake => { console.log(cake); }
รหัสของเราส่งคืนตัววนซ้ำซึ่งพิมพ์แต่ละค่าใน Set ไปยังคอนโซล:
Lemon Cake Carrot Cake Boston Cream Pie
มันง่ายมาก! คุณสามารถใช้ for-of loop:
for (let cake of cakes) { console.log(cake); }
รหัสนี้ส่งคืนผลลัพธ์เดียวกันกับ forEach
. ของเรา วนซ้ำ:
Lemon Cake Carrot Cake Boston Cream Pie
คุณสามารถเลือกใช้ for loop เพื่อวนซ้ำผ่าน Set ได้ แต่เนื่องจาก Sets เป็นอ็อบเจ็กต์ที่ทำซ้ำได้ จึงง่ายกว่าที่จะใช้ for-each หรือ for-of ลูป
การลบค่าที่ซ้ำกันโดยใช้ Set
เมื่อคุณเริ่มต้นชุดด้วยอาร์เรย์ ค่าที่ซ้ำกันทั้งหมดจะถูกลบออกโดยอัตโนมัติ นี่เป็นคุณสมบัติที่มีประโยชน์อย่างเหลือเชื่อ
สมมติว่าเรามีรายการสั่งเค้กจำนวนหนึ่ง:
var cakes = ["Lemon Cake", "Carrot Cake", "Strawberry Cheesecake", "Lemon Cake", "Chocolate Cake", "Chocolate Fudge Cake", "Chocolate Cake", "Red Velvet Cake"];
ชุดนี้ประกอบด้วยคำสั่งซื้อเค้กทั้งหมดที่ทำกับเบเกอรี่ ทั้งหมดมีแปดค่า; สองค่าซ้ำกัน
สมมุติว่าคนทำขนมปังอยากรู้ว่ามีเค้กประเภทใดบ้างที่สั่งไป เพื่อที่เธอจะได้เริ่มเตรียมครัว เราสามารถหาสิ่งนี้ได้โดยแปลงชุดของเราเป็นรายการ:
var unique_cakes = new Set(cakes); console.log(unique_cakes);
รหัสของเราส่งคืน:
Set(6) [ "Lemon Cake", "Carrot Cake", "Strawberry Cheesecake", "Chocolate Cake", "Chocolate Fudge Cake", "Red Velvet Cake" ]
รายการของเราถูกลดค่าลงเหลือหกค่า ค่าเหล่านี้เป็นค่าที่ไม่ซ้ำกันทั้งหมดจากรายการคำสั่งซื้อของเรา เหลือขั้นตอนเดียว
เราต้องแปลงชุดเค้กของเรากลับเป็นรายการเพื่อให้เราสามารถโต้ตอบกับมันได้โดยใช้วิธีการรายการมาตรฐาน เราสามารถทำได้โดยใช้ Array.from()
วิธีการ:
let final_cakes = Array.from(unique_cakes); console.log(final_cakes);
รหัสของเราส่งคืน:
[ "Lemon Cake", "Carrot Cake", "Strawberry Cheesecake", "Chocolate Cake", "Chocolate Fudge Cake", "Red Velvet Cake" ]
แม้ว่าผลลัพธ์ของรหัสนี้จะคล้ายกับชุดของเรา แต่มีข้อแตกต่างที่สำคัญประการหนึ่งคือ ขณะนี้ข้อมูลของเราถูกจัดเก็บเป็นอาร์เรย์ ซึ่งหมายความว่าเราสามารถโต้ตอบกับมันได้โดยใช้วิธีการอาร์เรย์ JavaScript ในตัวทั้งหมด
บทสรุป
Set object อนุญาตให้คุณจัดเก็บรายการของไอเท็มที่สามารถมีค่าที่ไม่ซ้ำกันเท่านั้น ชุดสามารถเริ่มต้นได้จากอ็อบเจ็กต์ iterable ที่มีอยู่ เช่น รายการหรือสตริง
เนื่องจากวัตถุ Set จะลบค่าที่ซ้ำกัน คุณจึงสามารถใช้เป็นวิธีการลบค่าที่ซ้ำกันออกจากอาร์เรย์ได้ เมื่อเสร็จแล้ว คุณสามารถแปลง Set กลับเป็นอาร์เรย์ได้
ตอนนี้คุณพร้อมที่จะเริ่มใช้ชุดใน JavaScript อย่างมืออาชีพแล้ว!