difference เปรียบเทียบอาร์เรย์สองตัว แล้วคืนค่าสมาชิกที่อยู่ในอาร์เรย์แรกเท่านั้น มีประโยชน์ในการหาข้อมูลใหม่ ข้อมูลที่หายไป หรือข้อมูลที่ไม่ตรงกัน
={{ $json.array1.difference($json.array2) }}
={{ $json.array1.difference($json.array2) }}
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| array1 | array | Yes | อาร์เรย์แรกที่เป็นฐานหลัก (เอาข้อมูลจากตรงนี้) | |
| array2 | array | Yes | อาร์เรย์ที่สองสำหรับเปรียบเทียบ (ค่าอะไรที่อยู่ตรงนี้จะถูกตัดออก) |
หาความแตกต่างระหว่างรายชื่อลูกค้าทั้งหมดกับรายชื่อลูกค้าที่ซื้อแล้ว เพื่อหารายชื่อที่ยังไม่ซื้อ
หาความแตกต่างระหว่างรายการสินค้าที่สั่งซื้อกับรายการที่ได้รับ
{{ [1, 2, 3, 4, 5].difference([3, 4, 5, 6]) }}={{ [1, 2, 3, 4, 5].difference([3, 4, 5, 6]) }}
[1, 2]
{{ $json.allCustomers.difference($json.purchasedCustomers) }}={{ $json.allCustomers.difference($json.purchasedCustomers) }}
[customer_id_1, customer_id_2, ...]
{{ $node['Order'].json.items.difference($node['Receive'].json.items) }}={{ $node['Order'].json.items.difference($node['Receive'].json.items) }}
[item_1, item_2, ...]
สำคัญมากครับ difference(array1, array2) คืนค่าสมาชิกของ array1 ที่ไม่อยู่ใน array2 ถ้าสลับลำดับเป็น difference(array2, array1) ผลลัพธ์จะกลับด้านเลย ต่างจาก intersection ที่ไม่สำคัญลำดับครับ ต้องระวังจุดนี้
ได้เลยครับ ฟังก์ชันจะคืนค่า duplicate มาด้วย ถ้าเราไม่อยากเห็น duplicate ในผลลัพธ์ เราต้องใช้ unique() หลังจากใช้ difference() ก็จะสะอาดแล้วนะ ส่วนตัวผมชอบทำแบบนี้ประจำครับ
ใช้ตรงที่ต้องเปรียบเทียบข้อมูลสองชุดและหาสิ่งที่มีในชุดแรกแต่ไม่มีในชุดที่สองครับ ตัวอย่างง่ายๆ คือ หาลูกค้าใหม่ หาสินค้าขาดหาย หาออร์เดอร์ที่ยังไม่ได้ส่ง หรือหาข้อมูลใดๆ ที่ควรตรวจสอบ difference แค่นั้นก็พอ
difference คือฟังก์ชันที่เปรียบเทียบสองอาร์เรย์ และส่งคืนค่าเฉพาะสมาชิกที่อยู่ในอาร์เรย์แรก แต่ไม่มีในอาร์เรย์ที่สอง ใช้เพื่อหาความแตกต่างระหว่างข้อมูลสองชุด เช่น อาร์เรย์แรกมี [1, 2, 3, 4, 5] ส่วนอาร์เรย์ที่สองมี [3, 4, 5, 6] ผลลัพธ์จะได้ [1, 2] เพราะ 1 และ 2 อยู่ในแรกแต่ไม่อยู่ในที่สอง
ที่เจ๋งคือเวลาทำงาน n8n ถ้าต้องการเช็คข้อมูล เปรียบเทียบรายชื่อ หรือหาสิ่งที่ขาดหายไป difference คือตัวช่วยที่เข้ากับบ้านครับ ใช้ใน Set Node หรือ Code Node ก็ได้ ขึ้นอยู่กับความซับซ้อน
ส่วนตัวผมใช้ประจำเวลาต้องการหาลูกค้าใหม่ที่ยังไม่เคยซื้อสินค้า หรือหา item ที่สั่งแต่ยังไม่ได้รับ ประหยัดเวลาจากการ Loop ข้อมูลเอง 😎