removeDuplicates ลบข้อมูลซ้ำออกจากอาร์เรย์ โดยเก็บเพียงอันแรกของแต่ละค่าเดียว ประโยชน์มากในการทำความสะอาดข้อมูล เช่นลบรายชื่อลูกค้า Email หรือ ID ที่ซ้ำ
={{ $json.array.removeDuplicates() }}
={{ $json.array.removeDuplicates() }}
ลบชื่อลูกค้าหรือสินค้าที่ซ้ำจากรายชื่อ
ได้รับเพียงข้อมูลที่ไม่ซ้ำเท่านั้น
{{ $json.numbers.removeDuplicates() }}={{ $json.numbers.removeDuplicates() }}
[1, 2, 3, 4, 5]
{{ $json.customerEmails.removeDuplicates() }}={{ $json.customerEmails.removeDuplicates() }}
[alice@example.com, bob@example.com, carol@example.com]
{{ $json.tags.removeDuplicates() }}={{ $json.tags.removeDuplicates() }}
[javascript, react, nodejs, express]
{{ $json.users.map(u => u.role).removeDuplicates() }}={{ $json.users.map(u => u.role).removeDuplicates() }}
[admin, user, moderator]
{{ $json.importedNames.removeDuplicates() }}={{ $json.importedNames.removeDuplicates() }}
[John Smith, Jane Doe, Bob Johnson]
ไม่ได้ครับ removeDuplicates() ทำงานได้เฉพาะ primitive values (string, number, boolean) เท่านั้น สำหรับ objects คุณต้องใช้ map() + pluck() หรือ unique() แล้วแล้วแต่ว่าต้องการเปรียบเทียบแบบไหน
removeDuplicates() เปรียบเทียบค่าด้วย strict equality (===) ดังนั้น 1 กับ ‘1’ เป็นคนละตัว ส่วน unique() ใช้ loose comparison บางทีแปลว่า 1 กับ ‘1’ อาจถูกมองว่าเหมือนกัน (ขึ้นอยู่กับ implementation) ส่วนตัวผมใช้ removeDuplicates() มากกว่าเพราะ strict equality ปลอดภัยกว่า
ใช้ได้ในหลายที่ เช่น Set Node (expression mode) Code Node Conditional Node เพื่อ filter output ส่วนตัวผมชอบใช้ใน Set Node เพื่อตั้ง field ลบซ้ำในตัวตั้งแต่แรก ประหยัดขั้นตอน 😎
removeDuplicates() จะเก็บ null และ undefined ไว้ด้วย ถ้าเกี่ยงอยากลบออก ให้ใช้ compact() ก่อน เช่น $json.array.compact().removeDuplicates() สำคัญคือต้องเรียง compact() ก่อน removeDuplicates() นะครับ
removeDuplicates เป็นเมธอด JavaScript ที่ลบรายการที่ซ้ำออกจากอาร์เรย์ โดยรักษาลำดับดั้งเดิมไว้ ใช้ได้กับ primitives เช่น string, number, boolean และจะเปรียบเทียบค่า (value comparison) ไม่ใช่ reference
ที่เจ๋งคือ removeDuplicates() ใช้ Set อยู่เบื้องหลัง ซึ่งเป็นการเปรียบเทียบแบบ strict equality (===) ดังนั้นมันจะถือว่า 1 กับ ‘1’ (string) เป็นคนละตัว นี่คือความแตกต่างหลักจาก unique() ที่ใช้ loose comparison
ส่วนตัวผมใช้ removeDuplicates() บ่อยมากตอนต้อง clean up email list หรือ tag list จากหลาย source ที่อาจมีข้อมูลซ้ำเกาะกันอยู่ 😎