.compact() คือฟังก์ชันสำหรับทำความสะอาดข้อมูล โดยลบค่า falsy ทั้งหมด (null, undefined, false, 0, empty string) ออกจากอาร์เรย์ เหมาะมากสำหรับการเตรียมข้อมูลก่อนประมวลผลต่อ
={{ $json.array.compact() }}
={{ $json.array.compact() }}
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| array | array | Yes | Array ที่มีค่า falsy ที่ต้องการลบออก (null, undefined, false, 0, ”) |
ลบค่า null และ undefined ที่ได้จากการค้นหาข้อมูล ก่อนส่งไปประมวลผลต่อ
ลบ empty string และค่า 0 ที่ไม่ต้องการออกจากรายการ
{{ [1, 0, 'hello', '', null, undefined, false, 'world'].compact() }}={{ [1, 0, 'hello', '', null, undefined, false, 'world'].compact() }}
[1, 'hello', 'world']
{{ $json.results.compact() }}={{ $json.results.compact() }}
[ข้อมูลที่ถูกต้องเท่านั้น]
{{ $node['Get Data'].json.data.map(x => x.email).compact() }}={{ $node['Get Data'].json.data.map(x => x.email).compact() }}
[email1@example.com, email2@example.com, ...]
{{ $json.userInput.split(',').map(x => x.trim()).compact() }}={{ $json.userInput.split(',').map(x => x.trim()).compact() }}
[ค่า1, ค่า2, ค่า3]
ปัญหานี้เจอบ่อยมากครับ compact() ลบค่า null, undefined, false, 0, ” (empty string) ส่วนค่า true, ข้อความที่มีตัวอักษร, ตัวเลขที่ไม่ใช่ 0 ทั้งหมดจะเก็บไว้นะครับ ความเข้าใจเรื่องนี้สำคัญมากต่อการใช้งาน compact() อย่างถูกต้อง
ใช่ครับ ตรงนี้ต้องระวังเพราะ compact() ถือ 0 เป็น falsy value และจะลบออกไป ถ้าคุณต้องการเก็บ 0 ไว้ ให้ใช้ filter() แทน แล้วระบุเงื่อนไขเองจะดีกว่าครับ เช่น filter(x => x !== null && x !== undefined) ใน Filter Node
ส่วนตัวผมใช้งาน compact() หลังจากดึงข้อมูล ค้นหา หรือรับ input จากผู้ใช้ เพื่อทำความสะอาดข้อมูลก่อนส่งต่อไปยังโหนดถัดไป ที่เจ๋งคือมันช่วยลดข้อผิดพลาดได้ครับ โดยเฉพาะเวลาส่งข้อมูลไปยังฐานข้อมูลหรือ API ภายนอก
compact() ลบค่า falsy ทั้งหมดอัตโนมัติ เหมาะใช้ใน Set Node ง่ายๆ ส่วน filter() ให้คุณระบุเงื่อนไขเอง เหมาะใช้เวลาต้องการควบคุมเงื่อนไขเอง ผมใช้ compact() เวลาต้องลบค่าว่างธรรมชาติ แต่ใช้ filter() เวลาต้องการเงื่อนไขพิเศษ
.compact() เป็นเครื่องมือที่เจ๋งสำหรับการทำความสะอาดข้อมูลในไฟล์โฟลว์ของเรา โดยการลบค่า falsy ออก (เช่น null, undefined, false, 0, ”) อาร์เรย์ที่สกปรกจะกลายเป็นสะอาดเพื่อประมวลผลต่อไป ตัวอย่างเช่น ถ้าอาร์เรย์มี [1, 0, ‘hello’, ”, null, false, ‘world’] จะเหลือเพียง [1, ‘hello’, ‘world’]
ที่เจ๋งคือใช้ compact() ใน Set Node ได้ง่ายมาก เหมาะสำหรับการทำความสะอาดข้อมูลจาก API หรือการรับ input ที่มีค่าว่างปนอยู่ ช่วยให้ workflow ราบรื่นและข้อผิดพลาดลดลง แทนการเขียน filter logic ด้วยเองที่ยุ่งยากกว่า
ส่วนตัวผมใช้ compact() บ่อยมากเวลาดึงข้อมูลจาก webhook หรือ API call เพื่อลบค่าที่ไม่ต้องการออก ประหยัดเวลาจากการเขียน filter logic เอง ได้เลย มันเป็นฟังก์ชันที่ทำให้ workflow เชื่อถือได้มากขึ้น