---
title: filter – กรองรายการจากอาร์เรย์ตามเงื่อนไข
url: https://www.thepexcel.com/functions/n8n/array-functions/filter-n8n/
type: function-explainer
program: n8n
syntax: array.filter(predicate)
date: 2025-12-16
updated: 2025-12-17
scores:
  popularity: 9
  difficulty: 4
  usefulness: 9
---

# filter – กรองรายการจากอาร์เรย์ตามเงื่อนไข

> กรองรายการจากอาร์เรย์ตามเงื่อนไข (คืนค่าอาร์เรย์ใหม่)

## คำอธิบาย

filter() เป็น JavaScript standard array method (ES2021+, ไม่ใช่ n8n-specific) กรองรายการในอาร์เรย์ตามเงื่อนไขที่กำหนด คืนค่าอาร์เรย์ใหม่ที่มีเฉพาะรายการที่ตรงตามเงื่อนไข (predicate function returns true) มีประโยชน์ในการเลือกข้อมูลเฉพาะส่วน ลบรายการที่ไม่ต้องการ หรือจัดกลุ่มข้อมูลตามเงื่อนไข

## Syntax

```excel
array.filter(predicate)
```

**Variant**

```excel
$json.items.filter(item => item.status === 'active')
```

เลือกเฉพาะรายการที่มีสถานะ 'active'

**Variant**

```excel
$json.products.filter(p => p.price > 100 && p.inStock)
```

กรองสินค้าตามหลายเงื่อนไข (ราคา > 100 และมีในสต็อก)

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| predicate | Yes | function |  | ฟังก์ชันตรวจสอบเงื่อนไข (element => condition) คืนค่า true (เก็บรายการนี้) หรือ false (ตัดออก) สำหรับแต่ละรายการในอาร์เรย์ |

## เคสการใช้งาน

### กรองข้อมูลตามสถานะ

เลือกเฉพาะรายการที่มีสถานะเฉพาะ เช่น สินค้าที่มีในสต็อก ผู้ใช้ที่ active

_เหมาะกับ:_ status-filtering

### กรองตามช่วงค่า

เลือกข้อมูลในช่วงที่กำหนด เช่น ราคา 100-500 บาท วันที่ภายใน 30 วัน

_เหมาะกับ:_ range-filtering

### ลบข้อมูลที่ไม่ต้องการ

กรองออกรายการที่ null, undefined หรือไม่ผ่านเงื่อนไข

_เหมาะกับ:_ data-cleaning

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: กรองตัวเลขมากกว่า 3

```excel
{{ [1, 2, 3, 4, 5, 6].filter(n => n > 3) }}
```

**ผลลัพธ์:** `[4, 5, 6]`

เลือกเฉพาะตัวเลขที่มากกว่า 3 ได้ [4, 5, 6] (ตัด 1, 2, 3 ออก)

### 2. ตัวอย่างที่ 2: กรองสินค้าที่มีในสต็อก

```excel
{{ [{ name: 'A', inStock: true }, { name: 'B', inStock: false }, { name: 'C', inStock: true }].filter(p => p.inStock) }}
```

**ผลลัพธ์:** `[{ name: 'A', inStock: true }, { name: 'C', inStock: true }]`

เลือกเฉพาะสินค้าที่ inStock === true ได้ A และ C (ตัด B ออก)

### 3. ตัวอย่างที่ 3: กรองตามหลายเงื่อนไข

```excel
{{ $json.users.filter(u => u.active && u.age >= 18 && u.role === 'member') }}
```

**ผลลัพธ์:** `[{ name: 'John', active: true, age: 25, role: 'member' }, ...]`

เลือกเฉพาะผู้ใช้ที่ active, อายุ >= 18, และเป็น member

### 4. ตัวอย่างที่ 4: ลบ null และ undefined

```excel
{{ [1, null, 2, undefined, 3, 0, false].filter(v => v != null) }}
```

**ผลลัพธ์:** `[1, 2, 3, 0, false]`

กรองออก null และ undefined (ใช้ != null จะตัดทั้งคู่) เก็บ 0 และ false ไว้

## หมายเหตุเพิ่มเติม

⚠️ filter() เป็น JavaScript standard method (ES2021+) ไม่ใช่ n8n-specific extension คืนค่าอาร์เรย์ใหม่ (immutable) ถ้าไม่มีรายการตรงเงื่อนไขจะได้ [] (empty array) predicate function ต้องคืนค่า boolean (true/false) ใช้คู่กับ map(), reduce(), some(), every()

## คำถามที่พบบ่อย

**Q: filter() สร้างอาร์เรย์ใหม่หรือแก้ไขอาร์เรย์เดิม?**

สร้างอาร์เรย์ใหม่ (immutable) ไม่เปลี่ยนแปลงอาร์เรย์เดิม เช่น arr.filter(x => x > 3) สร้าง array ใหม่ arr เดิมยังเหมือนเดิม

**Q: filter() กับ find() ต่างกันอย่างไร?**

filter() คืนค่า array ของทุกรายการที่ตรงเงื่อนไข (เช่น [1, 2, 3]) ส่วน find() คืนค่ารายการแรกที่ตรงเงื่อนไข (เช่น 1) ใช้ filter() เมื่อต้องการหลายรายการ ใช้ find() เมื่อต้องการแค่รายการแรก

**Q: filter() จะคืนค่าอะไรถ้าไม่มีรายการตรงเงื่อนไข?**

คืนค่า empty array [] (ไม่ใช่ null) เช่น [1, 2].filter(n => n > 10) ได้ [] สามารถเช็คด้วย arr.filter(...).length === 0

**Q: ใช้ filter() เมื่อไหร่?**

ใช้เมื่อต้องการเลือกรายการเฉพาะส่วนจากอาร์เรย์ เช่น กรองสินค้าที่มีในสต็อก เลือกผู้ใช้ที่ active ลบข้อมูล null/undefined หรือเลือกข้อมูลตามช่วงค่า ใช้คู่กับ map() เพื่อ transform ข้อมูลหลังกรอง

## ฟังก์ชันที่เกี่ยวข้อง

- [map – แปลงแต่ละรายการในอาร์เรย์ (transform elements)](https://www.thepexcel.com/functions/n8n/array-functions/map-n8n/)
- find-n8n
- [some – ตรวจสอบว่ามีรายการใดผ่านเงื่อนไขหรือไม่](https://www.thepexcel.com/functions/n8n/array-functions/some-n8n/)
- [every – ตรวจสอบว่าทุกค่าตรงเงื่อนไข](https://www.thepexcel.com/functions/n8n/array-functions/every-n8n/)
- [reduce – รวมหรือสะสมอาร์เรย์เป็นค่าเดียว (aggregate)](https://www.thepexcel.com/functions/n8n/array-functions/reduce-n8n/)

---

_Source: [https://www.thepexcel.com/functions/n8n/array-functions/filter-n8n/](https://www.thepexcel.com/functions/n8n/array-functions/filter-n8n/)_
