delete
ผู้ประกอบการใช้ในการลบคุณสมบัติจากวัตถุ
const obj = { foo: "bar" }
delete obj.foo
obj.hasOwnProperty("foo") // false
โปรดทราบว่าสำหรับอาร์เรย์นี้ไม่ได้เป็นเช่นเดียวกับการเอาองค์ประกอบ ในการลบองค์ประกอบจากอาร์เรย์ใช้หรือArray#splice
Array#pop
ตัวอย่างเช่น:
arr // [0, 1, 2, 3, 4]
arr.splice(3,1); // 3
arr // [0, 1, 2, 4]
รายละเอียด
delete
ใน JavaScript มีฟังก์ชั่นที่แตกต่างจากคำหลักใน C และ C ++: มันไม่ได้เพิ่มหน่วยความจำโดยตรง แต่มีวัตถุประสงค์เพียงอย่างเดียวคือการลบคุณสมบัติออกจากวัตถุ
สำหรับอาร์เรย์การลบคุณสมบัติที่สอดคล้องกับดัชนีจะสร้างอาร์เรย์แบบกระจาย (เช่นอาร์เรย์ที่มี "หลุม" อยู่ในนั้น) เบราว์เซอร์ส่วนใหญ่แสดงดัชนีอาร์เรย์ที่หายไปว่า "ว่างเปล่า"
var array = [0, 1, 2, 3]
delete array[2] // [0, 1, empty, 3]
โปรดทราบว่าdelete
ไม่ได้ย้ายเข้ามาarray[3]
array[2]
ฟังก์ชั่นในตัวที่แตกต่างกันใน JavaScript จัดการกับอาร์เรย์เบาบางแตกต่างกัน
for...in
จะข้ามดัชนีว่างเปล่าอย่างสมบูรณ์
การfor
วนซ้ำแบบดั้งเดิมจะส่งคืนundefined
ค่าที่ดัชนี
วิธีการใด ๆ ที่ใช้Symbol.iterator
จะส่งคืนundefined
ค่าที่ดัชนี
forEach
, map
และreduce
ก็จะข้ามดัชนีที่ขาดหายไป
ดังนั้นdelete
ผู้ประกอบการไม่ควรใช้สำหรับกรณีการใช้งานทั่วไปของการลบองค์ประกอบจากอาร์เรย์ อาร์เรย์มีวิธีการเฉพาะสำหรับการลบองค์ประกอบและจัดสรรหน่วยความจำ: และArray#splice()
Array#pop
Array # splice (เริ่ม [, deleteCount [, item1 [, item2 [, ... ]]]])
Array#splice
เปลี่ยนแปลงอาร์เรย์และส่งกลับดัชนีใด ๆ ที่ถูกลบ deleteCount
องค์ประกอบที่จะถูกลบออกจากดัชนีstart
และจะถูกแทรกลงในอาร์เรย์จากดัชนีitem1, item2... itemN
start
หากdeleteCount
ไม่ได้ระบุอิลิเมนต์จาก startIndex จะถูกลบออกไปยังจุดสิ้นสุดของอาร์เรย์
let a = [0,1,2,3,4]
a.splice(2,2) // returns the removed elements [2,3]
// ...and `a` is now [0,1,4]
นอกจากนี้ยังมีชื่อเดียว แต่ที่แตกต่างกัน, ฟังก์ชั่นได้ที่:Array.prototype
Array#slice
Array # slice ([start [, end]])
Array#slice
ไม่เป็นอันตรายและส่งกลับอาร์เรย์ใหม่ที่มีดัชนีที่ระบุจากการstart
end
หากend
ไม่มีการระบุเป็นค่าเริ่มต้นไปยังจุดสิ้นสุดของอาร์เรย์ ถ้าend
เป็นบวกมันจะระบุดัชนีแบบไม่รวมศูนย์ที่จะหยุดที่ หากend
เป็นลบมันจะระบุดัชนีที่จะหยุดโดยนับถอยหลังจากจุดสิ้นสุดของอาร์เรย์ (เช่น -1 จะละเว้นดัชนีสุดท้าย) ถ้าend <= start
ผลลัพธ์เป็นอาร์เรย์ว่าง
let a = [0,1,2,3,4]
let slices = [
a.slice(0,2),
a.slice(2,2),
a.slice(2,3),
a.slice(2,5) ]
// a [0,1,2,3,4]
// slices[0] [0 1]- - -
// slices[1] - - - - -
// slices[2] - -[3]- -
// slices[3] - -[2 4 5]
อาร์เรย์ # ป๊อป
Array#pop
เอาองค์ประกอบสุดท้ายออกจากอาร์เรย์และส่งกลับองค์ประกอบนั้น การดำเนินการนี้จะเปลี่ยนความยาวของอาร์เรย์