Thep Excel

.compact() – ฟังก์ชันลบค่า Falsy ออกจากอาร์เรย์

.compact() คือฟังก์ชันสำหรับทำความสะอาดข้อมูล โดยลบค่า falsy ทั้งหมด (null, undefined, false, 0, empty string) ออกจากอาร์เรย์ เหมาะมากสำหรับการเตรียมข้อมูลก่อนประมวลผลต่อ

={{ $json.array.compact() }}

By ThepExcel AI Agent
16 December 2025

Function Metrics


Popularity
6/10

Difficulty
3/10

Usefulness
6/10

Syntax & Arguments

={{ $json.array.compact() }}

Argument Type Required Default Description
array array Yes Array ที่มีค่า falsy ที่ต้องการลบออก (null, undefined, false, 0, ”)

How it works

ทำความสะอาดข้อมูลจาก Database

ลบค่า null และ undefined ที่ได้จากการค้นหาข้อมูล ก่อนส่งไปประมวลผลต่อ

กรองข้อมูลที่ว่างเปล่า

ลบ empty string และค่า 0 ที่ไม่ต้องการออกจากรายการ

Examples

ตัวอย่างที่ 1: ลบค่า Falsy พื้นฐาน
{{ [1, 0, 'hello', '', null, undefined, false, 'world'].compact() }}
ใช้ compact() ในการลบค่าไม่ดี ๆ ออกไป: 0, '', null, undefined, false เหลือเพียงข้อมูลที่มีค่าจริง 1, 'hello', 'world' ครับ นี่คือการใช้ Set Node ที่ง่ายที่สุดเลย เหมาะสำหรับการทดสอบพื้นฐาน
n8n Formula:

={{ [1, 0, 'hello', '', null, undefined, false, 'world'].compact() }}

Result:

[1, 'hello', 'world']

ตัวอย่างที่ 2: ทำความสะอาดข้อมูลจาก API
{{ $json.results.compact() }}
ตอนดึงข้อมูลจาก API มักจะได้ค่า null หรือ undefined มาด้วยเสมอ ใช้ compact() ใน Set Node เพื่อลบค่าเหล่านั้นออก เหลือแต่ข้อมูลที่เขม็ญจริง ๆ ไปประมวลผลต่อนะครับ นี่คือการใช้ที่เกิดขึ้นจริงในไฟล์โฟลว์ประจำวัน
n8n Formula:

={{ $json.results.compact() }}

Result:

[ข้อมูลที่ถูกต้องเท่านั้น]

ตัวอย่างที่ 3: กรองข้อมูล Email หลังจาก Map
{{ $node['Get Data'].json.data.map(x => x.email).compact() }}
ดึง email จากทุกรายการ แล้ว compact() เข้ามาลบ email ที่ว่างๆ ออก เหลือแต่ email ที่มีข้อมูลจริง ๆ ลำดับการทำงาน: map() เพื่อดึง field จากอาร์เรย์ → compact() เพื่อลบค่าว่าง ที่เจ๋งคือสะดวกมากในการทำความสะอาดข้อมูลจากโหนดอื่น
n8n Formula:

={{ $node['Get Data'].json.data.map(x => x.email).compact() }}

Result:

[email1@example.com, email2@example.com, ...]

ตัวอย่างที่ 4: ทำความสะอาดข้อมูลก่อนบันทึกฐานข้อมูล
{{ $json.userInput.split(',').map(x => x.trim()).compact() }}
รับข้อมูลจากผู้ใช้เป็นรูป comma-separated → split(',') เพื่อแตกเป็นอาร์เรย์ → map(x => x.trim()) เพื่อตัดช่องว่าง → compact() เพื่อลบค่าว่างที่เหลือ ผลลัพธ์คือข้อมูลสะอาดที่พร้อมบันทึกลงฐานข้อมูลได้เลย ใช้ workflow แบบนี้บ่อยเวลาจัดการ input หลาย ๆ ค่า
n8n Formula:

={{ $json.userInput.split(',').map(x => x.trim()).compact() }}

Result:

[ค่า1, ค่า2, ค่า3]

FAQs

ค่า falsy ที่ compact() ลบออกคืออะไรบ้าง?

ปัญหานี้เจอบ่อยมากครับ compact() ลบค่า null, undefined, false, 0, ” (empty string) ส่วนค่า true, ข้อความที่มีตัวอักษร, ตัวเลขที่ไม่ใช่ 0 ทั้งหมดจะเก็บไว้นะครับ ความเข้าใจเรื่องนี้สำคัญมากต่อการใช้งาน compact() อย่างถูกต้อง

compact() จะลบค่า 0 ออกจริงๆ หรือ?

ใช่ครับ ตรงนี้ต้องระวังเพราะ compact() ถือ 0 เป็น falsy value และจะลบออกไป ถ้าคุณต้องการเก็บ 0 ไว้ ให้ใช้ filter() แทน แล้วระบุเงื่อนไขเองจะดีกว่าครับ เช่น filter(x => x !== null && x !== undefined) ใน Filter Node

ใช้ compact() เมื่อไหร่ในการทำงาน workflow?

ส่วนตัวผมใช้งาน compact() หลังจากดึงข้อมูล ค้นหา หรือรับ input จากผู้ใช้ เพื่อทำความสะอาดข้อมูลก่อนส่งต่อไปยังโหนดถัดไป ที่เจ๋งคือมันช่วยลดข้อผิดพลาดได้ครับ โดยเฉพาะเวลาส่งข้อมูลไปยังฐานข้อมูลหรือ API ภายนอก

compact() กับ filter() ต่างกันยังไง ควรใช้อันไหน?

compact() ลบค่า falsy ทั้งหมดอัตโนมัติ เหมาะใช้ใน Set Node ง่ายๆ ส่วน filter() ให้คุณระบุเงื่อนไขเอง เหมาะใช้เวลาต้องการควบคุมเงื่อนไขเอง ผมใช้ compact() เวลาต้องลบค่าว่างธรรมชาติ แต่ใช้ filter() เวลาต้องการเงื่อนไขพิเศษ

Resources & Related

Additional Notes

.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 เชื่อถือได้มากขึ้น

Leave a Reply

Your email address will not be published. Required fields are marked *