เพื่อลบรายการออกจากอาร์เรย์ใน JavaScript ตามค่า ให้ทำ 2 ขั้นตอน:
- หา ดัชนี (index) ของค่าด้วย
indexOf() - ลบด้วย
splice()โดยระบุ index และจำนวนรายการที่จะลบ
ตัวอย่าง
<html>
<body>
<script>
var array = [10, 30, 40, 80, 90];
var index = array.indexOf(90);
document.write("Original array: " + array);
if (index > -1) {
array.splice(index, 1); // ลบ 1 รายการ ตำแหน่ง index
}
document.write("<br>New array after deletion: " + array);
</script>
</body>
</html>
ผลลัพธ์
Original array: 10,30,40,80,90 New array after deletion: 10,30,40,80
วิธีทางเลือก (ES6+)
// ใช้ filter (สร้างอาร์เรย์ใหม่ ไม่แก้อาร์เรย์เดิม)
const filtered = array.filter(item => item !== 90);
// ใช้ findIndex + splice (ลบทุกค่าที่ตรงกัน)
array.forEach((item, i) => {
if (item === 90) array.splice(i, 1);
});
ข้อควรระวัง
indexOfหาได้แค่ครั้งแรกเท่านั้น ถ้ามีค่าซ้ำต้องใช้ลูปspliceแก้ไขอาร์เรย์ต้นฉบับ (mutates original array)- ถ้าไม่พบค่า
indexOfจะคืน-1ต้องตรวจสอบก่อน splice