pluck() ดึงค่าจากฟิลด์เดียวกันจากทุก object ในอาร์เรย์ เป็นวิธีที่รวดเร็วสำหรับการสกัดข้อมูลเดียว เช่นดึง email ทั้งหมด, ชื่อทั้งหมด, หรือ ID ทั้งหมดจากรายชื่อ
=array.pluck(propertyName)
=array.pluck(propertyName)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| propertyName | string | Yes | ชื่อฟิลด์ที่ต้องการดึก เช่น ‘name’, ’email’, ‘id’ |
ดึก email ทั้งหมดจากรายชื่อผู้ใช้ เพื่อส่ง email
ดึก ID ของทุกสินค้า เพื่อส่งไปยัง API
{{ [{ name: 'John', email: 'john@example.com' }, { name: 'Jane', email: 'jane@example.com' }].pluck('email') }}={{ [{ name: 'John', email: 'john@example.com' }, { name: 'Jane', email: 'jane@example.com' }].pluck('email') }}
["john@example.com", "jane@example.com"]
{{ $json.users.pluck('name') }}={{ $json.users.pluck('name') }}
["John", "Jane", "Bob"]
{{ $('API Request').first().json.products.pluck('id') }}={{ $('API Request').first().json.products.pluck('id') }}
[101, 102, 103, 104]
{{ $json.items.pluck('image_url') }}={{ $json.items.pluck('image_url') }}
["https://example.com/img1.jpg", "https://example.com/img2.jpg"]
pluck() ดึงฟิลด์เดียวเท่านั้น ส่วน map() สามารถแปลง array ได้อย่างอิสระ ใช้ pluck() เมื่อต้องการดึงฟิลด์เดียว ใช้ map() เมื่อต้องการแปลงหรือสร้าง object ใหม่
pluck() จะใส่ undefined ไว้ในตำแหน่งนั้น ถ้าต้องการกรองให้ยาว ใช้ .filter() ตามหลัง pluck() ได้
ไม่ได้โดยตรง pluck() ใช้เฉพาะฟิลด์ level ที่ 1 ถ้าต้องการดึงฟิลด์ซ้อน ให้ใช้ map() แทน เช่น .map(x => x.details.name)
ไม่ pluck() คืนค่าเป็นอาร์เรย์ใหม่ อาร์เรย์เดิมไม่เปลี่ยนแปลง
ไม่ได้ pluck() ใช้กับ array เท่านั้น ถ้ามี object ธรรมดา ต้องแปลงเป็น array ด้วย Object.values() หรือ Object.entries() ก่อน
pluck เป็น n8n built-in method ที่ดึงค่าจากฟิลด์เดียวกันออกจากทุก object ในอาร์เรย์ แตกต่างจาก map() ตรงที่ pluck ใช้เฉพาะสำหรับการดึงฟิลด์เดียว ฟังก์ชันนี้ง่ายและตรงไปตรงมา.
ผมใช้ pluck() บ่อยมากเมื่อต้องการดึง email, ID, หรือชื่อจากรายชื่อลูกค้าหรือสินค้า มันสั้นกว่า map() และอ่านได้ชัดเจน