forEach ใช้ break ไม่ได้แก้ไงดี (JavaScript)

19 พฤศจิกายน 2566
หากรันโค้ดนี้
const arr = [1,2,3,4,5];
arr.forEach(e => {
break;
})
ก็จะได้ error นี้
Uncaught SyntaxError: Illegal break statement
สรุปสั้นๆ ว่าเราไม่สามารถ break ใน forEach ได้
แล้วเรา break ด้วยวิธีไหนได้บ้าง ?
ใช้ for-of แทน
const arr = [1,2,3,4,5];
for (const element of arr) {
break;
}
ใช้ for loop แบบคลาสสิคแทน
const arr = [1,2,3,4,5];
for (let i = 0; i < arr.length; i++) {
// const element = arr[i];
break;
}
ใช้ try-catch แล้ว throw error เพื่อ break
try {
const arr = [1,2,3,4,5];
arr.forEach(element => {
if (element > 2) {
throw new Error("break out of forEach");
}
console.log(element);
})
} catch (err) {
console.log("error:", err.message);
}
ผลลัพธ์ที่จะได้เป็นดังนี้
1
2
error: break out of forEach
แต่ผมไม่แนะนำให้ใช้วิธีนี้เท่าไหร่เพราะทำให้โค้ดมีความซับซ้อนและอ่านยากเกินไป แต่ทั้งนี้ทั้งนั้นก็ขึ้นอยู่กับ use case ครับ
หมดแล้วครับวิธีที่ผมใช้แก้ปัญหา break ใน forEach ไม่ได้
ขอบคุณครับ