Array Filter
Descripción
Sección titulada «Descripción»El nodo Array Filter filtra un array de objetos mediante una expresión JavaScript. Cada elemento del array se evalúa individualmente: si la condición es true, el elemento se incluye en el resultado; de lo contrario, se descarta.
A diferencia de Key Filter (que solo compara contra una lista fija de valores), Array Filter soporta cualquier expresión JavaScript: rangos, condiciones múltiples, métodos de string, comparaciones contra datos de otros nodos, etc.
La variable item representa el elemento actual que se está evaluando. La variable data da acceso al payload completo del nodo actual, útil para comparar contra valores de nodos anteriores.
Configuración
Sección titulada «Configuración»Parámetros
Sección titulada «Parámetros»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| source | text | No | Ruta dot-notation al array dentro del data. Si se deja vacío, usa data directamente. Ejemplo: items, result.rows |
| condition | textarea | Sí | Expresión JavaScript. Usa item para el elemento actual y data para el payload completo |
| includeNonMatching | select | No | false (por defecto): devuelve solo el array de coincidencias. true: devuelve { matching, nonMatching, _matched, _removed, _total } |
Por defecto (includeNonMatching: false)
Sección titulada «Por defecto (includeNonMatching: false)»Devuelve los elementos que cumplen la condición como array directo (compatible con otros nodos que esperan un array):
[ { "name": "Luis", "country": "ES", "price": 120 }, { "name": "Marie", "country": "FR", "price": 200 }, { "name": "Marc", "country": "FR", "price": 150 }, { "name": "Rosa", "country": "ITA", "price": 180 }]Con includeNonMatching: true
Sección titulada «Con includeNonMatching: true»{ "matching": [ { "name": "Luis", "price": 120 }, { "name": "Marie", "price": 200 } ], "nonMatching": [ { "name": "Ana", "price": 50 }, { "name": "Jean", "price": 30 } ], "_matched": 2, "_removed": 2, "_total": 4}Ejemplos de Uso
Sección titulada «Ejemplos de Uso»Filtrar por país exacto
Sección titulada «Filtrar por país exacto»{ "label": "Solo España", "condition": "item.country === 'ES'"}Filtrar por rango de precio
Sección titulada «Filtrar por rango de precio»{ "label": "Precio entre 50 y 200", "condition": "item.price >= 50 && item.price <= 200"}Filtrar registros activos y mayores de edad
Sección titulada «Filtrar registros activos y mayores de edad»{ "label": "Adultos activos", "condition": "item.status === 'active' && item.age >= 18"}Filtrar por etiqueta (array dentro del objeto)
Sección titulada «Filtrar por etiqueta (array dentro del objeto)»{ "label": "Clientes VIP", "condition": "item.tags && item.tags.includes('vip')"}Excluir pedidos cancelados
Sección titulada «Excluir pedidos cancelados»{ "label": "No cancelados", "condition": "item.status !== 'cancelled'"}Variable dinámica en la condición
Sección titulada «Variable dinámica en la condición»{ "label": "Sobre precio mínimo", "condition": "item.price > {{min_price}}"}El valor {{min_price}} se resuelve desde el data del nodo actual antes de evaluar la condición.
Array desde otro nodo + incluir no coincidentes
Sección titulada «Array desde otro nodo + incluir no coincidentes»{ "label": "Filtrar Premium", "source": "customers", "condition": "item.plan === 'premium'", "includeNonMatching": "true"}data.matching → clientes premium
data.nonMatching → el resto
Campos de Salida
Sección titulada «Campos de Salida»| Campo | Descripción |
|---|---|
| (array) | Con includeNonMatching: false — array directo de elementos que cumplen la condición |
matching | Con includeNonMatching: true — elementos que pasaron el filtro |
nonMatching | Con includeNonMatching: true — elementos que no pasaron |
_matched | Cantidad de coincidencias |
_removed | Cantidad de elementos descartados |
_total | Total de elementos evaluados |
Sintaxis de la Condición
Sección titulada «Sintaxis de la Condición»La condición es una expresión JavaScript evaluada con "use strict". Variables disponibles:
| Variable | Descripción |
|---|---|
item | Elemento actual del array que se está evaluando |
data | Payload completo del nodo actual |
Operadores soportados: ===, !==, >, <, >=, <=, &&, \|\|, !
Métodos soportados: item.campo.includes(), item.campo.startsWith(), item.campo.endsWith(), Array.isArray(item.campo), etc.
- Si
itemno tiene el campo referenciado en la condición, la expresión devuelvefalse(sin error); el elemento va anonMatching - Las variables dinámicas (
{{campo}}) en la condición se resuelven antes de la evaluación - El campo
sourcesoporta variables cross-node:{{@NombreNodo.campo}},{{#N.campo}} - Si la condición compilada lanza error para un elemento específico, ese elemento se trata como no coincidente (el flujo global no se interrumpe)
- No requiere credenciales
Nodos Relacionados
Sección titulada «Nodos Relacionados»- Array Group By — agrupar array por valor de campo
- Key Filter — filtrar por lista estática de valores exactos
- Decision — bifurcación condicional basada en expresión
- Iterator — iterar sobre el array filtrado