.compact() คือฟังก์ชันสำหรับทำความสะอาดข้อมูล โดยลบค่า falsy ทั้งหมด (null, undefined, false, 0, empty string) ออกจากอาร์เรย์ เหมาะมากสำหรับการเตรียมข้อมูลก่อนประมวลผลต่อ
Syntax
{{ $json.array.compact() }}
.compact() คือฟังก์ชันสำหรับทำความสะอาดข้อมูล โดยลบค่า falsy ทั้งหมด (null, undefined, false, 0, empty string) ออกจากอาร์เรย์ เหมาะมากสำหรับการเตรียมข้อมูลก่อนประมวลผลต่อ
{{ $json.array.compact() }}
.flatten() เป็นตัวลดมิติของ nested array ให้กลายเป็นอาร์เรย์เดียว สะดวกมากเวลาต้องประมวลผลข้อมูลซับซ้อนจาก API หรือ database ที่มีโครงสร้างแบบซ้อนๆ
{{ $json.arrayField.flatten() }} {{ $json.arrayField.flatten(depth) }}
.format() จัดรูปแบบตัวเลข วันที่ หรือข้อมูลให้เป็นสตริงอ่านง่ายตามรูปแบบที่ต้องการ เช่น เงินสด เปอร์เซ็นต์ หรือวันที่แบบต่างๆ
{{ $json.field.format(formatString) }}
.intersection() หาสมาชิกร่วมที่อยู่ในอาร์เรย์ทั้งสอง ฟังก์ชันนี้มีประโยชน์ในการค้นหาข้อมูลที่ตรงกัน เช่นลูกค้าร่วม หรือสินค้าที่ทั้งสองฝ่ายมี
{{ array1.intersection(array2) }}
$if() เป็น n8n built-in convenience function สำหรับทำ conditional logic (if-else) ใน expressions ทำงานเหมือน ternary operator (condition ? true : false) แต่อ่านง่ายกว่า คืนค่าตาม condition ที่กำหนด เหมาะสำหรับแปลง status code เป็นข้อความ ให้ค่า default กรณีข้อมูลหายไป หรือจัดหมวดหมู่ข้อมูลตามเงื่อนไข
$if(condition, valueIfTrue, valueIfFalse)
$input.all() เป็น method ที่ดึง input items ทั้งหมดมาในครั้งเดียวเป็น array ใช้เมื่อต้องการประมวลผลหลาย items พร้อมกัน ทำ aggregation เช่น sum, average, หรือต้องการเข้าถึงข้อมูลทั้งหมดก่อนทำ transformation ต่างจาก $json ที่เข้าถึงเฉพาะ item ปัจจุบัน $input.all() ให้ภาพรวมของข้อมูลทั้งหมด สามารถใช้ array methods เช่น map, filter, reduce ได้ทันที เหมาะกับงาน batch processing และ data analysis
$input.all()
$input.first() ดึงเฉพาะ item แรกสุดจากข้อมูลที่เข้ามาใน node ปัจจุบัน ใช้เมื่อต้องการ configuration, header row หรือข้อมูลอ้างอิงที่อยู่ตำแหน่งแรกเสมอ return เป็น item object เดียว (ไม่ใช่ array) ถ้าไม่มี items จะได้ undefined
$input.first()
$input.item คือตัวแปรที่ใช้เข้าถึงรายการข้อมูลปัจจุบันที่กำลังประมวลผล โดยให้ข้อมูลครบถ้วนกว่า $json เพราะรวมทั้ง json data, binary files และ pairing info ไว้ด้วยกัน ส่วนใหญ่ใช้ $json ก็เพียงพอ แต่ $input.item จำเป็นเมื่อต้องการเข้าถึงไฟล์ binary หรือ track ความสัมพันธ์ระหว่าง items
$input.item
$input.last() ดึงเฉพาะ item สุดท้ายจากข้อมูลที่เข้ามาใน node ปัจจุบัน ใช้เมื่อต้องการสรุปผล footer หรือข้อมูลสุดท้ายที่เก็บไว้ทีแล้ว return เป็น item object เดียว ถ้าไม่มี items จะได้ undefined
$input.last()
$itemIndex คือตัวแปรที่บอกตำแหน่ง (index) ของ item ปัจจุบันที่กำลังประมวลผล เริ่มนับจาก 0 (zero-based) ใช้สำหรับติดตาม item ใน multi-item workflow, สร้าง running number, หรือทำ conditional logic ตามตำแหน่ง เช่น skip item แรกหรือทำอะไรพิเศษกับ item สุดท้าย
$itemIndex
$json เป็นตัวแปรพื้นฐานที่สำคัญที่สุดใน n8n ใช้เข้าถึงข้อมูล JSON ของ item ปัจจุบันที่กำลังประมวลผล ทำงานคล้าย this หรือ current row ใน Excel สามารถเข้าถึงข้อมูลได้ทั้งแบบ dot notation ($json.field) และ bracket notation ($json['field']) ใช้บ่อยที่สุดในทุก workflow เพราะเป็นจุดเริ่มต้นของการเข้าถึงข้อมูล
$json
$now เป็นอ็อบเจ็กต์ Luxon DateTime ที่คืนค่า timestamp ปัจจุบัน (เทียบเท่า DateTime.now()) รองรับการจัดรูปแบบด้วย .toFormat(), การคำนวณด้วย .plus()/.minus(), และการแปลงเขตเวลาด้วย .setZone() เหมาะสำหรับสร้าง timestamp แม่นยำในการบันทึกข้อมูล
$now
$today เป็นอ็อบเจ็กต์ Luxon DateTime ที่คืนค่าวันที่ปัจจุบันโดยตั้งเวลาเป็นเที่ยงคืน (00:00:00.000) รองรับการจัดรูปแบบด้วย .toFormat(), การคำนวณด้วย .plus()/.minus(), และการเปรียบเทียบวันที่ เหมาะสำหรับตรวจสอบวันหมดอายุ กรองข้อมูลตามวัน
$today
abs() คืนค่าสัมบูรณ์ (absolute value) ของตัวเลข ถอดเครื่องหมายลบออกให้ได้ค่าบวกเสมอ ใช้เมื่อต้องการหาระยะห่างหรือผลต่างโดยไม่สนใจเครื่องหมาย
number.abs()
append() เป็น n8n-specific array extension (ไม่ใช่ JavaScript method มาตรฐาน) เพิ่มค่าหรือรายการใหม่ต่อท้ายอาร์เรย์ คืนค่าเป็นอาร์เรย์ใหม่ (immutable – ไม่แก้ไขอาร์เรย์เดิม) มีประโยชน์ในการเพิ่มรายการใหม่ รวมข้อมูลจากหลายแหล่ง หรือสร้างอาร์เรย์แบบ incremental
array.append(value)
average คำนวณค่าเฉลี่ยเลขคณิต (arithmetic mean) ของตัวเลขทั้งหมดในอาร์เรย์ ใช้เมื่อต้องการหาค่าเฉลี่ยยอดขาย คะแนนเฉลี่ย อุณหภูมิเฉลี่ย หรือเมตริกอื่นๆ ในการประมวลผล workflow
array.average()
ceil ปัดเศษขึ้นให้เป็นจำนวนเต็มที่มากกว่าหรือเท่ากับค่าเดิม ใช้เมื่อต้องการปัดทศนิยมขึ้นทุกกรณี ตรงข้ามกับ floor ที่ปัดลง
number.ceil()
chunk แบ่งอาร์เรย์ออกเป็นชิ้นเล็กๆ โดยระบุขนาดของแต่ละชิ้น เมื่อมีข้อมูลจำนวนมาก ฟังก์ชันนี้ช่วยในการประมวลผลแบบ batch หรือส่งข้อมูลไปให้บริการภายนอกที่มีจำกัดการใช้งาน
chunk(array, size)
concat ต่อข้อความหลาย ๆ ตัวเป็นข้อความเดียว ฟังก์ชันนี้มีประโยชน์ในการสร้างข้อความจากส่วนต่างๆ
concat(str1, str2, ...)
diff() หาช่วงห่างระหว่าง DateTime object สองตัว โดย return Duration object ที่บอกจำนวนวัน ชั่วโมง นาที หรือวินาที ที่ต่างกัน เหมาะสำหรับคำนวณอายุ ระยะเวลาจัดส่ง เวลาที่ผ่านไป หรือสร้าง SLA calculation ในงาน automation
{{ $json.date1.diff($json.date2, 'unit') }}
difference เปรียบเทียบอาร์เรย์สองตัว แล้วคืนค่าสมาชิกที่อยู่ในอาร์เรย์แรกเท่านั้น มีประโยชน์ในการหาข้อมูลใหม่ ข้อมูลที่หายไป หรือข้อมูลที่ไม่ตรงกัน
{{ $json.array1.difference($json.array2) }}
endsWith ตรวจสอบว่าข้อความสิ้นสุดด้วยข้อความที่ระบุหรือไม่ ส่งคืนค่า true หรือ false ฟังก์ชันนี้มีประโยชน์ในการตรวจสอบนามสกุลไฟล์ ส่วนท้ายข้อความ หรือการจำแนกประเภท
endsWith(text, searchString)
ตรวจสอบว่าทุกรายการใน array ตรงตามเงื่อนไขหรือไม่ คืนค่า true ถ้าทั้งหมดผ่าน false ถ้ามีสักอันไม่ผ่าน
$json.array.every(item => condition)
extractDomain ดึงชื่อโดเมนจาก URL หรือ email ฟังก์ชันนี้มีประโยชน์ในการวิเคราะห์ URL แยกแหล่งข้อมูล หรือจัดหมวดหมู่ข้อมูลตามโดเมน
extractDomain(url)
extractEmail ดึงที่อยู่อีเมลจากข้อความหรือข้อมูล ฟังก์ชันนี้มีประโยชน์ในการสกัด email addresses จากข้อความยาว ตัวอักษร หรือ log files
extractEmail(text)
extractUrl ดึงที่อยู่ URL จากข้อความหรือข้อมูล ฟังก์ชันนี้มีประโยชน์ในการสกัด URLs จากข้อความยาว ความเห็น หรือ log files
extractUrl(text)
extractUrlPath ดึง path segment จาก URL โดยแยกออกจากโดเมน ฟังก์ชันนี้มีประโยชน์ในการวิเคราะห์ URL หรือสกัดเส้นทางสำหรับการประมวลผล
extractUrlPath(url)
filter() เป็น JavaScript standard array method (ES2021+, ไม่ใช่ n8n-specific) กรองรายการในอาร์เรย์ตามเงื่อนไขที่กำหนด คืนค่าอาร์เรย์ใหม่ที่มีเฉพาะรายการที่ตรงตามเงื่อนไข (predicate function returns true) มีประโยชน์ในการเลือกข้อมูลเฉพาะส่วน ลบรายการที่ไม่ต้องการ หรือจัดกลุ่มข้อมูลตามเงื่อนไข
array.filter(predicate)
first() เป็น n8n array extension ที่ดึงสมาชิกตัวแรกจากอาร์เรย์ โดยไม่ต้องใช้ index notation [0] มีประโยชน์เมื่อต้องการเข้าถึงบันทึกแรก เมตาดาต้า header row หรือการทำให้โค้ด readable มากขึ้น
$json.array.first() หรือ {{ [array].first() }}
floor() ปัดเศษตัวเลขลงเป็นจำนวนเต็มที่เล็กที่สุด เช่น floor(4.7) คืนค่า 4 ใช้งานในการคำนวณจำนวนสินค้า หน้า หรือเวลาในการประมวลผล
Math.floor(number)
hasField() คือ method ที่ใช้ตรวจสอบว่าอ็อบเจ็กต์มี field หรือ key ที่ระบุหรือไม่ คืนค่า true ถ้ามี field นั้น false ถ้าไม่มี มีประโยชน์สำหรับป้องกัน error เวลาเข้าถึง field ที่อาจจะไม่มีอยู่
$json.hasField('fieldName')
hash แปลง string เป็น hash code ที่ไม่สามารถแปลงกลับได้ ฟังก์ชันนี้มีประโยชน์ในการเข้ารหัสข้อมูล สร้าง unique IDs หรือตรวจสอบความเท่ากันของข้อมูล
hash(text)
includes ตรวจสอบการมีอยู่ของค่าในอาร์เรย์ คืนค่า true หากพบค่าที่ระบุ ใช้มากในการตรวจสอบความถูกต้องของข้อมูล เช่นตรวจสอบว่า status มีค่า 'completed' หรือตรวจสอบว่า ID อยู่ในรายชื่อ
includes(array, value)
indexOf หาตำแหน่งแรกของค่าที่ระบุในอาร์เรย์ คืนค่า index (เริ่มตั้งแต่ 0) หากพบค่านั้น หรือ -1 หากไม่พบ ฟังก์ชันนี้มีประโยชน์ในการตรวจสอบตำแหน่ง และเข้าถึงข้อมูลใกล้เคียง
indexOf(array, value, [fromIndex])
isDomain ตรวจสอบว่าข้อความเป็นโดเมนที่ถูกต้องตามมาตรฐาน ฟังก์ชันนี้มีประโยชน์ในการกรองข้อมูลที่ไม่ถูกต้อง ตรวจสอบรายการติดต่ออินเทอร์เน็ต หรือจัดระเบียบข้อมูลเว็บไซต์
isDomain(text)
isEmail ตรวจสอบว่า string เป็น email address ที่ถูกต้องหรือไม่ ฟังก์ชันนี้มีประโยชน์ในการตรวจสอบความถูกต้องของ email ก่อนการส่งข้อมูลหรือการบันทึก
isEmail(value)
isEmpty() ตรวจสอบว่าค่า string, array, object, หรือ undefined/null เป็นค่าว่างเปล่าหรือไม่ ฟังก์ชันนี้เหมาะสำหรับการตรวจสอบความสมบูรณ์ของข้อมูล ตัดสินใจการทำงานใน workflow หรือกรองข้อมูลที่ไม่มีค่า
{{ value.isEmpty() }}
isNotEmpty() ตรวจสอบว่าข้อมูลมีค่า หรือ null/undefined/สตริงว่าง ใช้ในการกรองข้อมูลว่างใน IF node หรือ filter() ใน Code node
value.isNotEmpty()
isNumeric ตรวจสอบว่าค่า string เป็นตัวเลขหรือสามารถแปลงเป็นตัวเลขได้หรือไม่ ฟังก์ชันนี้มีประโยชน์ในการตรวจสอบว่าข้อมูล input เป็นตัวเลขก่อนการคำนวณหรือการประมวลผล
isNumeric(value)
isUrl ตรวจสอบว่า string เป็น URL ที่ถูกต้องหรือไม่ ฟังก์ชันนี้มีประโยชน์ในการตรวจสอบความถูกต้องของ URL ก่อนการส่งข้อมูลหรือการใช้ในการเรียก API
isUrl(value)
join() เป็น JavaScript standard array method (ES5+, ไม่ใช่ n8n-specific) แปลงทุกรายการในอาร์เรย์เป็นข้อความเดียวโดยคั่นด้วยตัวคั่นที่กำหนด คืนค่าเป็น string เสมอ ส่วนตัวผมชอบใช้คู่กับ map() และ filter() มากครับ เพราะสามารถ transform ข้อมูลก่อนรวมได้ มีประโยชน์ในการสร้าง CSV strings, รวมชื่อหลายคนเป็นรายการ, จัดรูปแบบแท็ก หรือแปลงอาร์เรย์เป็น formatted text เพื่อแสดงผลหรือส่งต่อ ที่เจ๋งคือรองรับตัวคั่นแบบกำหนดเอง (custom separators) และจัดการ null/undefined อัตโนมัติ
array.join([separator])
keys() ดึงรายชื่อคีย์ทั้งหมดจากอ็อบเจ็กต์ ส่งคืนเป็นอาร์เรย์ ใช้สำรวจโครงสร้างข้อมูล วนลูป หรือแปลงข้อมูลจากอ็อบเจ็กต์
{{ $json.fieldName.keys() }}
last() ดึงสมาชิกตัวสุดท้ายจากอาร์เรย์ เป็น n8n built-in method ที่ช่วยให้เข้าถึงข้อมูลล่าสุดได้ง่าย เช่น บันทึกล่าสุดจาก database, ความคิดเห็นล่าสุด, หรือ order ล่าสุดที่ถูกประมวลผล โดยไม่ต้องคำนวณ index เอง
array.last()
map() เป็น JavaScript standard array method (ES2021+, ไม่ใช่ n8n-specific) แปลงแต่ละรายการในอาร์เรย์โดยใช้ callback function คืนค่าอาร์เรย์ใหม่ที่มีความยาวเท่าเดิม แต่รายการถูก transform แล้ว มีประโยชน์ในการสกัด fields, คำนวณค่าใหม่ หรือแปลงรูปแบบข้อมูล
array.map(callback)
max คือวิธีหาค่าที่มากที่สุดจากอาร์เรย์ของตัวเลข ใช้เมื่อต้องการหาราคาสูงสุด คะแนนสูงสุด หรือค่าเชิงปริมาณที่สูงสุด
{{ max(array) }}
merge() เป็นเมธอดของ n8n ที่รวมอ็อบเจ็กต์สองตัวโดยใช้ base object (อ็อบเจ็กต์แรก) เป็นฐาน เมื่อคีย์ซ้ำกัน ค่าจาก base จะถูกเก็บไว้ สร้าง object ใหม่ (immutable) ไม่แก้ไข object เดิม ใช้ได้กับการสร้างค่าเริ่มต้น รวมข้อมูล หรือเพิ่ม metadata ให้ workflow results
baseObject.merge(objectToMerge)
minus() ลบระยะเวลาออกจาก DateTime object โดยรับ duration object ที่ระบุหน่วยเวลาที่ต้องการลบ (years, months, weeks, days, hours, minutes, seconds, milliseconds) สามารถรวมหลายหน่วยในครั้งเดียวได้ เช่น {days: 7, hours: 3} เหมาะสำหรับคำนวณวันที่ย้อนหลัง กำหนด deadline ย้อนหลัง คำนวณวันหมดอายุ สร้าง date range สำหรับ filter ข้อมูล หรือคำนวณช่วงเวลาในอดีตสำหรับ analytics
{{ $json.dateTime.minus(duration) }}
pluck() ดึงค่าจากฟิลด์เดียวกันจากทุก object ในอาร์เรย์ เป็นวิธีที่รวดเร็วสำหรับการสกัดข้อมูลเดียว เช่นดึง email ทั้งหมด, ชื่อทั้งหมด, หรือ ID ทั้งหมดจากรายชื่อ
array.pluck(propertyName)
plus() บวกระยะเวลาเข้ากับ DateTime object โดยรับ duration object หรือตัวเลข (milliseconds) เป็น argument ส่วนตัวผมชอบใช้แบบ duration object มากกว่า เพราะอ่านง่ายครับ เช่น {days: 7, hours: 2} สามารถบวกได้หลายหน่วยพร้อมกัน ที่เจ๋งคือ method นี้คำนวณวันที่อย่างถูกต้องแม้เจอ DST หรือปีอธิกสุรทิน return ค่าเป็น DateTime object ใหม่ที่สามารถ chain ต่อกับ method อื่นได้เลย เช่น .format() หรือ .diff()
{{ $json.date.plus(duration) }}
quote ห่อข้อความด้วยเครื่องหมายคำพูด (double quotes) ฟังก์ชันนี้มีประโยชน์ในการสร้าง CSV strings, JSON data, หรือสำหรับการแสดงผลที่ต้องการคำพูด
quote(text)