-
Notifications
You must be signed in to change notification settings - Fork 0
for #17
Copy link
Copy link
Open
Labels
Description
for มีแบบไหนบ้าง?
forทั่วไป:for (let i = 0; i < 10; i++)for ... in:for (let key in object)for ... of:for (let item of array)(Array) forEach:array.forEach((item) => { /* ... */ })
for ... in หรือ for ... of?
for ... inใช้กับของที่มี key เช่น Objectfor ... ofใช้กับ iterable object เช่น Array, String
วิธีการจำ: จำว่า ถ้าเราต้อง if (key in object) แปลว่าเราต้อง for (let key in object)
for ไหน break ได้บ้าง?
for ทุกตัวที่ไม่ใช่ forEach สามารถ break ได้หมด — ถ้าพูดง่ายๆ เลยคือ forEach ต้องรับ callback function ซึ่งเราจะสั่งหยุดกลางทางไม่ได้
ทำยังไงให้ Array forEach สามารถ break ได้?
ทำได้ 2 แบบ
1. ใช้ .some
Keyword:
true1 อัน
.some เป็นฟังก์ชันที่เอาไว้เช็คว่ามีตัวหนึ่งตรงตามเงื่อนไขไหม โดยมันจะค่อยๆ วิ่ง linear ไปเรื่อยๆ
เราสามารถทำให้มัน loop ไปเรื่อยๆ แล้วหยุดตัวที่ตามเงื่อนไขได้โดยการ return true ออกไป มันจะหยุด loop ทันที
const maybeHasNull = [1, 2, 3, null, 5, 6]
// เขียนด้วย for ปกติ
// จะหยุดถ้าเจอค่า null
for (let c of maybeHasNull) {
if (c === null) break
console.log(c)
}
// => 1 2 3
// เขียนด้วย `.some`
maybeHasNull.some((c) => {
if (c === null) return true
console.log(c)
return false
})
// => 1 2 32. ใช้ .every
Keyword: ไม่มี
false
.every เป็นฟังก์ชันที่เอาไว้เช็คว่าทุกตัวตรงตามเงื่อนไขไหม โดยจะค่อยๆ วิ่ง linear ไปเรื่อยๆ เหมือนกับ .some
ถ้าพูดง่ายๆ ก็คือตรงกันข้ามกับ .some แหละ โดยจะหยุดถ้ามีค่า false โดน return ออกมา
const maybeHasNull = [1, 2, 3, null, 5, 6]
// เขียนด้วย `.some`
maybeHasNull.some((c) => {
if (c === null) return true
console.log(c)
return false
})
// => 1 2 3
// เขียนด้วย `.every`
maybeHasNull.every((c) => {
if (c === null) return false
console.log(c)
return true
})
// => 1 2 3Reactions are currently unavailable