Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

JavaScript Spread Operator:A Guide

ตัวดำเนินการสเปรดของ avaScript จะขยายอาร์เรย์ในไวยากรณ์ที่ยอมรับอาร์กิวเมนต์ ตัวดำเนินการสเปรดมักใช้เพื่อทำซ้ำวัตถุ ผสานอาร์เรย์ หรือส่งเนื้อหาของรายการไปยังฟังก์ชัน

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

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

ตัวดำเนินการกระจาย JavaScript คืออะไร

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

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

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

ไวยากรณ์สำหรับตัวดำเนินการสเปรดคือ:

var names = ["John", "Lisa", "Harry"];
var new_names = [...names, "Leslie"];
console.log(new_names);

ในไวยากรณ์นี้ เราใช้ ...names เพื่อส่งต่อเนื้อหาของรายการ "ชื่อ" ของเราไปยังรายการที่เรียกว่า "new_names" รายการ "new_names" ประกอบด้วยรายการทั้งหมดในรายการ "ชื่อ" รวมถึงชื่อใหม่:เลสลี่

81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้

ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก

กรณีใช้งานทั่วไปสามกรณีสำหรับตัวดำเนินการการแพร่กระจายคือ:

  • สร้างสำเนาของการทำซ้ำได้
  • เพิ่มรายการใน iterable ใหม่
  • ส่งรายการอาร์กิวเมนต์ไปยังฟังก์ชัน

ไวยากรณ์การแพร่กระจายแสดงถึงองค์ประกอบแต่ละรายการในรายการ

Sread Operator JavaScript:สร้างสำเนาของ Iterable

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

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

const lemon_drizzle = {
	name: "Lemon Drizzle",
	price: 1.95,
	vegan: true
}

const new_lemon_drizzle = {...lemon_drizzle};
console.log(new_lemon_drizzle);

รหัสของเราพิมพ์สิ่งต่อไปนี้ไปยังคอนโซล JavaScript:

{ name: "Lemon Drizzle", price: 1.95, vegan: true }

มีความแตกต่างที่สำคัญสองสามประการที่เราต้องทำในตัวอย่างนี้ เรากำลังสร้างสำเนาของวัตถุ JavaScript ซึ่งหมายความว่าเราจำเป็นต้องใช้วงเล็บปีกกา ({}) แทนวงเล็บเหลี่ยม ([])

ประการที่สอง แทนที่จะระบุอาร์เรย์เดียว เราได้ระบุวัตถุ ออบเจ็กต์นี้มีคีย์และค่าสามรายการ ซึ่งแต่ละคีย์เกี่ยวข้องกับคัพเค้ก “Lemon Drizzle” ของเรา

กระจาย JavaScript:เพิ่มรายการไปยัง Iterable ใหม่

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

const cupcakes = [
	'Lemon Drizzle',
	'Chocolate Chip',
	'Vanilla Iced'
];

const new_cupcakes = [...cupcakes, 'Red Velvet', 'Raspberry Dark Chocolate'];
console.log(new_cupcakes);

รหัสของเราส่งคืน:

["Lemon Drizzle", "Chocolate Chip", "Vanilla Iced", "Red Velvet", "Raspberry Dark Chocolate"]

เราได้สร้างสำเนาอาร์เรย์ JavaScript ดั้งเดิมของเราที่ชื่อว่า “new_cupcakes” ซึ่งรวมถึงค่าเพิ่มเติมบางส่วนที่เราสร้างขึ้นด้วย

คุณสามารถใช้ไวยากรณ์เดียวกันเพื่อรวมสอง iterables เข้าด้วยกันได้เช่นกัน สิ่งที่คุณต้องทำคือระบุสอง iterables ในวงเล็บเหลี่ยมโดยใช้ตัวดำเนินการ spread:

const old_menu = [
	'Lemon Drizzle',
	'Chocolate Chip',
	'Vanilla Iced'
];

const new_menu = [
	'Red Velvet',
	'Raspberry Dark Chocolate'
]

const final_menu = [...old_menu, ...new_menu];
console.log(final_menu);

รหัสของเราส่งคืน:

["Lemon Drizzle", "Chocolate Chip", "Vanilla Iced", "Red Velvet", "Raspberry Dark Chocolate"]

ผลลัพธ์เหมือนเดิมถูกส่งกลับจากก่อนหน้านี้ แต่คราวนี้เราได้รวมสองอาร์เรย์เข้าด้วยกัน

กระจาย JavaScript:ส่งผ่านอาร์กิวเมนต์ไปยังฟังก์ชัน

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

function placeOrder(name, order, price) {
	console.log('Name: ' + name);
	console.log('Order: ' + order);
	console.log('Price: ' + price);
}

placeOrder('Geoff', 'Red Velvet', 1.85);

รหัสของเราส่งคืน:

Name: Geoff
Order: Red Velvet
Price 1.85

เราได้ประกาศฟังก์ชันชื่อ placeOrder () ที่รับสามอาร์กิวเมนต์และพิมพ์ไปยังคอนโซล แต่ละค่านำหน้าด้วยป้ายกำกับที่อธิบายว่าแต่ละอาร์กิวเมนต์มีอะไรบ้าง

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

function placeOrder(name, order, price) {
	console.log('Name: ' + name);
	console.log('Order: ' + order);
	console.log('Price: ' + price);
}

const order = ['Geoff', 'Red Velvet', 1.85];

placeOrder(...order);

รหัสของเราส่งคืน:

Name: Geoff
Order: Red Velvet
Price 1.85

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



บทสรุป

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

ตอนนี้คุณพร้อมที่จะเริ่มใช้โอเปอเรเตอร์การแพร่กระจาย JavaScript อย่างมืออาชีพแล้ว!

สำหรับคำแนะนำเกี่ยวกับแหล่งข้อมูล หนังสือ และหลักสูตรการเรียนรู้ JavaScript ยอดนิยม โปรดดูบทความ How to Learn JavaScript