Ir al contenido

Remove Duplicates

El nodo Remove Duplicates recorre un array y descarta los elementos repetidos, conservando la primera aparición de cada uno. La comparación puede hacerse sobre el elemento completo o sobre una o varias claves específicas.

Es equivalente al nodo Remove Duplicates de n8n.

Si no se indica un source, el nodo opera sobre el array recibido en el data del nodo anterior. Cuando el data no es un array pero contiene una propiedad items o data que sí lo es, el nodo la usa automáticamente. Si el campo key se deja vacío, se comparan los elementos completos (serializados); si se indican varias claves separadas por coma, dos elementos se consideran duplicados solo cuando coinciden en todas ellas.

ParámetroTipoRequeridoDescripción
sourcetextNoRuta dot-notation al array dentro del data. Vacío = usa data directamente. Ejemplo: items, result.rows
keytextNoCampo(s) por los que detectar duplicados (dot-notation, separados por coma). Vacío = compara el elemento completo. Ejemplo: email, id

El nodo devuelve el array sin duplicados directamente (compatible con otros nodos que esperan un array):

[
{ "id": 1, "email": "ana@example.com" },
{ "id": 2, "email": "luis@example.com" }
]

Se conserva siempre la primera aparición de cada valor. Si la entrada no es un array (ni tiene items/data array), el nodo devuelve un error indicando que se configure source o se conecte un nodo que devuelva un array.

{
"label": "Emails únicos",
"key": "email"
}

Conserva un solo registro por cada valor de email.

Duplicados por combinación de varias claves

Sección titulada «Duplicados por combinación de varias claves»
{
"label": "Únicos por email + país",
"key": "email, country"
}

Dos elementos se consideran iguales solo si coinciden en email y country.

{
"label": "Etiquetas únicas",
"source": "tags"
}

Sin key, compara cada elemento completo; útil para arrays de strings o números repetidos.

  • Se preserva el orden original: se mantiene la primera ocurrencia de cada valor
  • Las claves admiten dot-notation para acceder a campos anidados (ej: user.email)
  • El campo source soporta variables dinámicas y cross-node: {{@NombreNodo.campo}}, {{#N.campo}}
  • No requiere credenciales