JavaScript: ชิ้นและประกบกัน

JavaScript มาพร้อมกับฟังก์ชันอาร์เรย์มากมาย เช่น “.push”, “.unshift”, “.pop” และ “.shift” อย่างไรก็ตาม วิธีการเปลี่ยนอาเรย์เหล่านี้ไม่สามารถใช้งานได้จริงในทุกกรณีที่คุณต้องการใช้ เนื่องจากเป็นการทำลายล้างและเปลี่ยนอาเรย์ดั้งเดิม โดยทั่วไปแล้วจะเป็นการดีกว่าที่จะหลีกเลี่ยงการใช้วิธีการทำลายล้างและนั่นคือที่มาของวิธีการนั้น” ชิ้น” และ “ ประกบกัน” เข้ามาดำเนินการ

Slice เป็นวิธีอาร์เรย์ที่เลือกองค์ประกอบในอาร์เรย์และส่งกลับเป็นวัตถุอาร์เรย์ใหม่

array.slice (เริ่มต้น, สิ้นสุด)

วิธีการแบ่งส่วนสามารถส่งผ่านได้ด้วยอาร์กิวเมนต์ 2 รายการ (ทั้งคู่เป็นหมายเลขดัชนีอาร์เรย์) อาร์กิวเมนต์แรกระบุตำแหน่งที่จะเริ่มต้นการเลือก และอาร์กิวเมนต์ที่สองทำเครื่องหมายที่จุดสิ้นสุดแต่ไม่รวมองค์ประกอบนั้น

var fruits = [กล้วย, ส้ม, มะนาว, แอปเปิ้ล, มะม่วง];
var citrus = Fruits.slice(1, 3); // ส่งกลับ [ส้ม, มะนาว]

หากสไลซ์ถูกเรียกด้วยอาร์กิวเมนต์เดียวเช่นนี้: Fruits.slice(2)

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

[มะนาว แอปเปิ้ล มะม่วง]

*หากสไลซ์ถูกเรียกโดยไม่มีอาร์กิวเมนต์ มันจะส่งคืนอาร์เรย์ทั้งหมดที่ถูกเรียกใช้

Splice เป็นวิธีการแบบอาร์เรย์ที่ทั้งเพิ่มและลบรายการออกจากอาร์เรย์

array.splice (ดัชนี, จำนวน, item1, … item4)

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

var fruits = [กล้วย, ส้ม, แอปเปิล, มะม่วง];
Fruits.splice(2, 1, มะนาว, กีวี); // ส่งกลับ [กล้วย, ส้ม, มะนาว, “กีวี”, มะม่วง]

ตัวต่อนี้จะลบองค์ประกอบที่มีดัชนี 2 เนื่องจากเริ่มต้นที่นั่นเนื่องจากอาร์กิวเมนต์แรก อาร์กิวเมนต์ที่สองระบุว่าควรลบ 1 องค์ประกอบออกจากตำแหน่งนั้น จากนั้นจึงแทรกอาร์กิวเมนต์ที่ 3 และ 4 ในตำแหน่งนั้นในที่สุด

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

var fruits = [กล้วย, ส้ม, แอปเปิ้ล, มะม่วง];
Fruits.splice(2, 0, มะนาว, กีวี); // ส่งกลับ [ “กล้วย”, “ส้ม”, “มะนาว”, “กีวี”, “แอปเปิ้ล”, “มะม่วง”]

*แทรกค่าของอาร์กิวเมนต์สุดท้ายก่อนดัชนีที่ระบุในอาร์กิวเมนต์แรก