slice ดึงส่วนของข้อความหรืออาร์เรย์จากตำแหน่งเริ่มต้นถึงสิ้นสุด ใช้ได้กับทั้ง string และ array ในการตัดหรือสกัดข้อมูลบางส่วน
={{ $json.field.slice(start, end) }}
={{ $json.field.slice(start, end) }}
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| start | number | Optional | 0 | ตำแหน่งเริ่มต้น (0-indexed) ถ้าเป็นลบจะนับจากท้ายสุด default คือ 0 |
| end | number | Optional | ตำแหน่งสิ้นสุด (ไม่รวม end position) ถ้าไม่ระบุจะดึงจนถึงท้าย |
ดึง 3 ตัวอักษรแรกจากรหัส
ดึง 2 ตัวอักษรสุดท้าย
{{ $json.text.slice(0, 5) }}={{ $json.text.slice(0, 5) }}
Hello
{{ $json.items.slice(-3) }}={{ $json.items.slice(-3) }}
[item4, item5, item6]
{{ $json.products.slice(2, 5) }}={{ $json.products.slice(2, 5) }}
[product3, product4, product5]
{{ $json.email.slice(0, $json.email.indexOf('@')) }}={{ $json.email.slice(0, $json.email.indexOf('@')) }}
username
{{ $json.filename.slice(-4) }}={{ $json.filename.slice(-4) }}
.pdf
ทั้งสองดึงข้อความจาก string ได้ แต่ slice() ทำได้ทั้ง string และ array ส่วน substring() ใช้ได้เฉพาะ string เท่านั้น และสำคัญคือ slice() รองรับตัวเลขติดลบ ส่วน substring() ไม่รองรับนะครับ
ถ้า start > end ผลลัพธ์จะเป็น empty string หรือ empty array เพราะไม่มี position ที่ตรงกัน ก็เลยได้ค่าว่างออกมาครับ
slice() สร้าง shallow copy ใหม่ ไม่แก้ไข original data เลย ดังนั้นปลอดภัยในการใช้งานครับ ส่วนตัวผมชอบจุดนี้มากเพราะไม่ต้องกังวล data เดิมจะเสีย 😎
ได้ครับ! ใน Set Node ให้ตั้ง mode เป็น Expression แล้วใส่ {{ $json.field.slice(…) }} ก็ได้แล้ว ลองใช้ดูครับ
slice เป็นเมธอด JavaScript ที่ใช้ดึงส่วนของข้อความหรืออาร์เรย์ตามตำแหน่งที่ระบุ ทำงานบน string หรือ array โดยไม่แก้ไขข้อมูลต้นฉบับ
ที่เจ๋งคือมันรองรับตัวเลขติดลบด้วย ถ้าใส่ลบ จะนับจากท้ายสุดไปข้างหน้า เหมือนกับการนับเรียงย้อนหลัง ส่วนตัวผมใช้วิธีนี้บ่อยมากตอนต้องการดึง items สุดท้ายจาก array
เรียกได้ว่า slice() เป็นตัวช่วยหลักเลยในการทำ data transformation ใน n8n workflow โดยเฉพาะตอนต้องการแยกข้อมูลออกจากกันครับ 😎