เพชรบล็อก

  • Website Tech Stack

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

JavaScript code

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 ไม่ได้

ขอบคุณครับ

ผู้เขียน:

Kiart Tantasi (เพชร)



GitHub:

kiart-tantasi

เพชรบล็อก - [email protected]