คุณไม่สามารถใช้ break เพื่อออกจากเมธอด each ได้ เนื่องจากมันเลียนแบบพฤติกรรมของ forEach แบบเนทีฟซึ่งไม่มีกลไกให้หลุดพ้นจากลูป (นอกจากการโยนข้อยกเว้น)
ทางเลือกที่ใช้แทนได้
1. ใช้ _.find
เมธอด _.find จะหยุดลูปทันทีเมื่อพบเงื่อนไขที่ต้องการ ตัวอย่างเช่น:
_.find([1, 2, 3, 4], (element) => {
// ตรวจสอบเงื่อนไขที่นี่
if (element === 2) {
return true;
}
// ทำงานกับ element ที่นี่
// ...
});
2. โยนข้อยกเว้น (Throw Exception)
สามารถโยนข้อยกเว้นจากภายใน each เพื่อออกจากลูปได้ ตัวอย่างเช่น:
try {
_([1, 2, 3, 4]).each((element) => {
// ตรวจสอบเงื่อนไขที่นี่
if (element === 2) {
throw new Error();
}
// ทำงานกับ element ที่นี่
// ...
})
} catch (e) {
// ไม่ต้องทำอะไร แค่จับข้อยกเว้นเพื่อหยุดลูป
}
หมายเหตุ: วิธีการโยนข้อยกเว้นถือเป็น "การใช้งานผิดวัตถุประสงค์" (abuse) ของกลไกข้อยกเว้น ควรพิจารณาใช้ _.find, _.some, หรือลูป for...of แบบมาตรฐานแทนเพื่อความอ่านง่ายและประสิทธิภาพที่ดีกว่า