sum() เป็น array method ที่รวมยอดตัวเลขทั้งหมดใน array ให้เป็นผลรวมเดียว ใช้บ่อยมากในการคำนวณยอดรวม ยอดขาย หรือ aggregation ของข้อมูลตัวเลข
=$input.all().map(item => item.json.field).sum()
=$input.all().map(item => item.json.field).sum()
รวมยอดขาย revenue หรือ profit จากหลาย items
คำนวณจำนวนสินค้าทั้งหมดจาก inventory
รวม score หรือ points จาก multiple sources
Aggregation ของข้อมูลตัวเลขใดๆ ที่ต้องการผลรวม
{{ [10, 20, 30, 40].sum() }}={{ [10, 20, 30, 40].sum() }}
100
{{ $input.all().map(item => item.json.amount).sum() }}={{ $input.all().map(item => item.json.amount).sum() }}
5000
{{ $input.all().filter(item => item.json.status === 'paid').map(item => item.json.price).sum() }}={{ $input.all().filter(item => item.json.status === 'paid').map(item => item.json.price).sum() }}
3500
{{ $json.sales.sum() }}={{ $json.sales.sum() }}
8200
sum() จะพยายาม parse เป็นตัวเลข string ‘123’ จะกลายเป็น 123 แต่ถ้า parse ไม่ได้จะได้ NaN ควร filter หรือ map เพื่อแปลงเป็นตัวเลขก่อนใช้ sum() เช่น .map(x => Number(x)).sum()
sum() เป็น shorthand ของ reduce((acc, val) => acc + val, 0) ทำงานเหมือนกันแต่ sum() อ่านง่ายกว่าและชัดเจนว่าต้องการรวมยอด ใช้ sum() เมื่อรวมตัวเลขอย่างเดียว ใช้ reduce เมื่อต้อง custom logic
ได้ empty array จะ return 0 ซึ่งเป็น identity element ของการบวก ดังนั้นไม่ error และเป็น safe operation ใช้ได้อย่างปลอดภัย
sum() เป็น method ของ array ใน n8n ที่ทำหน้าที่รวมตัวเลขทั้งหมดในอาเรย์ ทำงานเหมือน SUM ใน Excel แต่เป็นวิธีการเรียกใช้แบบ method chaining ในโลกของ JavaScript/n8n
ที่เจ๋งคือสามารถ chain กับ method อื่นเช่น map(), filter() ได้อย่างสวยงาม เพื่อ extract และ filter ข้อมูลก่อนรวมยอด เช่น map ดึงแค่ column ที่ต้องการ filter เอาเฉพาะรายการที่เป็น ‘paid’ แล้ว sum ทั้งหมด
ส่วนตัวผมใช้ sum() บ่อยมากใน n8n workflows เพราะมันเป็น built-in method ของ n8n expressions ทำให้การคำนวณยอดรวมเป็นเรื่องง่าย ราคาต่อหน่วยสั้นกระชับ และอ่านง่าย