reduce() เป็น JavaScript standard array method (ES2021+, ไม่ใช่ n8n-specific) ประมวลผลแต่ละรายการในอาร์เรย์โดยใช้ reducer function (accumulator, currentValue) => newAccumulator คืนค่าผลลัพธ์เดียวที่ได้จากการรวมหรือสะสมค่า มีประโยชน์ในการหาผลรวม ผลคูณ นับจำนวน สร้าง objects/maps หรือคำนวณค่า statistics
=array.reduce((accumulator, currentValue) => newAccumulator, initialValue)
=array.reduce((accumulator, currentValue) => newAccumulator, initialValue)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| reducer | function | Yes | ฟังก์ชัน reducer (accumulator, currentValue) => newAccumulator ที่รับค่าสะสมและรายการปัจจุบัน แล้วคืนค่าสะสมใหม่ | |
| initialValue | any | Optional | ค่าเริ่มต้นของ accumulator (แนะนำให้ระบุเสมอ) ถ้าไม่ระบุจะใช้รายการแรกในอาร์เรย์ |
รวมราคา ยอดขาย หรือคำนวณค่า statistics จากอาร์เรย์
นับรายการที่ตรงเงื่อนไข เช่น สินค้าที่มีในสต็อก ผู้ใช้ที่ active
แปลง array เป็น object/map โดยใช้ key เฉพาะ เช่น user ID หรือ product code
{{ [1, 2, 3, 4, 5].reduce((sum, n) => sum + n, 0) }}={{ [1, 2, 3, 4, 5].reduce((sum, n) => sum + n, 0) }}
15
{{ [{ name: 'A', price: 100 }, { name: 'B', price: 200 }, { name: 'C', price: 150 }].reduce((total, item) => total + item.price, 0) }}={{ [{ name: 'A', price: 100 }, { name: 'B', price: 200 }, { name: 'C', price: 150 }].reduce((total, item) => total + item.price, 0) }}
450
{{ [{ name: 'A', inStock: true }, { name: 'B', inStock: false }, { name: 'C', inStock: true }].reduce((count, item) => item.inStock ? count + 1 : count, 0) }}={{ [{ name: 'A', inStock: true }, { name: 'B', inStock: false }, { name: 'C', inStock: true }].reduce((count, item) => item.inStock ? count + 1 : count, 0) }}
2
{{ [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }].reduce((map, user) => ({ ...map, [user.id]: user.name }), {}) }}={{ [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }].reduce((map, user) => ({ ...map, [user.id]: user.name }), {}) }}
{ '1': 'John', '2': 'Jane' }
ไม่บังคับ แต่แนะนำให้ระบุเสมอเพื่อหลีกเลี่ยง errors ถ้าไม่ระบุจะใช้รายการแรกเป็น initialValue และเริ่มลูปจากรายการที่ 2 ซึ่งอาจทำให้เกิดปัญหาถ้า array ว่าง
reduce() ยืดหยุ่นกว่า ทำได้หลายอย่าง (sum, count, object creation) ใน 1 ลูป ส่วน map() + sum() ต้องลูป 2 รอบ แต่ map() + sum() อ่านง่ายกว่าสำหรับ simple cases ใช้ reduce() เมื่อต้องการ complex aggregation
คืนค่า type เดียวกับ initialValue เช่น initialValue เป็น 0 → คืนค่า number, initialValue เป็น {} → คืนค่า object, initialValue เป็น [] → คืนค่า array
ใช้เมื่อต้องการ aggregate อาร์เรย์เป็นค่าเดียว เช่น หาผลรวม ผลคูณ average นับจำนวน สร้าง object/map flatten nested arrays หรือคำนวณ statistics ซับซ้อน ใช้คู่กับ filter() เพื่อกรองก่อน reduce() ใช้คู่กับ map() เพื่อ transform ก่อน reduce()
reduce() เป็น JavaScript standard array method (ES2021+) ที่ใช้ได้ใน n8n expressions ประมวลผลแต่ละรายการในอาร์เรย์โดยใช้ accumulator function เพื่อรวม aggregate หรือสะสมค่าเป็นผลลัพธ์เดียว มีประโยชน์ในการหาผลรวม นับจำนวน สร้าง objects หรือคำนวณค่ารวม