Funciones de lista list-functions

Las funciones de lista permiten manipular y trabajar con colecciones de valores dentro de las expresiones de recorrido. Estas funciones son esenciales para filtrar, ordenar, transformar y analizar matrices y listas en los recorridos del cliente.

Utilice las funciones de lista cuando necesite:

  • Filtrar y extraer elementos específicos de colecciones en función de criterios (filter, getListItem)
  • Ordenar y organizar elementos de lista en orden ascendente o descendente (sort)
  • Quitar duplicados y obtener valores únicos de las listas (distinct, distinctWithNull)
  • Comprobar si existen valores dentro de las colecciones (en)
  • Limitar el número de elementos devueltos de una lista (limit)
  • Obtener el tamaño de una lista (listSize) o transformar listas en formatos diferentes (serializeList)
  • Realizar operaciones de conjunto como buscar elementos comunes entre listas (intersect), combinar listas (mergeLists) o restar una lista de otra (differenceLists)

Las funciones de lista proporcionan potentes herramientas para trabajar con estructuras de datos complejas, lo que permite una manipulación de datos sofisticada y una lógica condicional basada en el contenido de la colección.

differenceLists differenceLists

Devuelve los elementos de la primera lista que no están presentes en la segunda lista (diferencia de conjunto: list 1 - list 2). Las entradas nulas se omiten. El resultado siempre elimina los valores duplicados y conserva el orden de inserción de la primera lista.

Sintaxis
differenceLists(<parameters>)
Parámetros
table 0-row-3 1-row-3 2-row-3
Parámetro Tipo Descripción
lista 1 listString, listInteger, listDecimal, listBoolean, listDuration, listDateTime, listDateTimeOnly o listDateOnly Lista de la que restar.
lista 2 Mismo tipo que la lista 1. Lista de elementos para quitar de la lista 1.
Firmas y tipos devueltos

differenceLists(listString,listString): listString

differenceLists(listInteger,listInteger): listInteger

differenceLists(listDecimal,listDecimal): listDecimal

differenceLists(listBoolean,listBoolean): listBoolean

differenceLists(listDuration,listDuration): listDuration

differenceLists(listDateTime,listDateTime): listDateTime

differenceLists(listDateTimeOnly,listDateTimeOnly): listDateTimeOnly

differenceLists(listDateOnly,listDateOnly): listDateOnly

Ejemplos
code language-json
differenceLists(['a','b','c'], ['b'])

Devuelve ['a','c'].

code language-json
differenceLists(['a','a','b'], [])

Devuelve ['a','b'].

code language-json
differenceLists([], ['a'])

Devuelve [].

distinct distinct

Devuelve los distintos valores u objetos de una lista determinada. Las entradas nulas se omiten.

Sintaxis
distinct(<parameters>)
Parámetros
table 0-row-3 1-row-3 2-row-3
Parámetro Tipo Descripción
listToProcess listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly o listObject Lista para procesar. Para listObject, debe ser una referencia de campo.
keyAttributeName cadena Este parámetro es opcional y solo para listObject. Si no se proporciona el parámetro, un objeto se considera duplicado si todos los atributos tienen los mismos valores. De lo contrario, un objeto se considera duplicado si el atributo dado tiene el mismo valor.
Firmas y tipos devueltos

distinct(<listInteger>)

Devuelve una lista de enteros.

distinct(<listDecimal>)

Devuelve una lista de decimales.

distinct(<listString>)

Devuelve una lista de cadenas.

distinct(<listDateTimeOnly>)

Devuelve una lista de horas de fecha sin tener en cuenta la zona horaria.

distinct(<listDateTime>)

Devuelve una lista de fechas y horas.

distinct(<listDateOnly>)

Devuelve una lista de fechas.

distinct(<listBoolean>)

Devuelve una lista de valores booleanos.

distinct(<listDuration>)

Devuelve una lista de duraciones.

distinct(<listObject>)

distinct(<listObject>,<string>)

Devuelve una lista de objetos.

Ejemplos

distinct([10,2,10,null])

Devuelve [10, 2].

distinctWithNull distinctWithNull

Devuelve los distintos valores u objetos de una lista determinada. Si la lista tiene al menos una entrada nula, aparecerá una entrada nula en la lista devuelta.

Sintaxis
distinctWithNull(<parameters>)
Parámetros
table 0-row-3 1-row-3
Parámetro Tipo Descripción
listToProcess listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly Lista para procesar.
Firmas y tipos devueltos

distinctWithNull(<listInteger>)

Devuelve una lista de enteros.

distinctWithNull(<listDecimal>)

Devuelve una lista de decimales.

distinctWithNull(<listString>)

Devuelve una lista de cadenas.

distinctWithNull(<listDateTimeOnly>)

Devuelve una lista de horas de fecha sin tener en cuenta la zona horaria.

distinctWithNull(<listDateTime>)

Devuelve una lista de fechas y horas.

distinctWithNull(<listDateOnly>)

Devuelve una lista de fechas.

distinctWithNull(<listBoolean>)

Devuelve una lista de valores booleanos.

distinctWithNull(<listDuration>)

Devuelve una lista de duraciones.

Ejemplos

distinctWithNull([10,2,10,null])

Devuelve [10, 2, null]

Nota: El parámetro <listObject> no se admite en esta función.

filter filter

Devuelve un listObject con objetos cuyo atributo key coincide con uno de los valores de clave determinados.

Sintaxis
filter(<parameters>)
Parámetros
table 0-row-3 1-row-3 2-row-3 3-row-3
Parámetro Tipo Descripción
listToFilter listObject lista de objetos que se van a filtrar. Debe ser una referencia de campo.
keyAttributeName cadena nombre del atributo en los objetos de la lista dada, utilizado como clave para el filtrado
keyValueList list matriz de valores clave para el filtrado
Firmas y tipos devueltos

filter(listObject, string, listString)

filter(listObject, string, listInteger)

filter(listObject, string, listDecimal)

filter(listObject, string, listDateTime)

filter(listObject, string, listDateTimeOnly)

filter(listObject, string, listDateOnly)

filter(listObject, string, listDuration)

filter(listObject, string, listBoolean)

Devuelve un listObject.

Ejemplos

Este es un ejemplo de una carga útil pasada en un evento entrante “myevent”:

code language-json
"productListItems": [{
   "id": "product1",
   "name": "the product 1",
   "price": 20
},{
   "id": "product2",
   "name": "the product 2",
   "price": 30
},{
   "id": "product3",
   "name": "the product 3",
   "price": 50
}]

Puede utilizar la siguiente expresión:

code language-json
filter(
 @event{myevent.productListItems},
 "id",
 ["product2", "product3", "product4"]
)

Devuelve un listObject que contiene los dos objetos con “product2” y “product3” como id.

getListItem getListItem

Devuelve el elemento de la lista en el índice dado.

Sintaxis
getListItem(<parameters>)
Parámetros
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 8-row-2 9-row-2
Parámetro Tipo
list listString
list listBoolean
list listInteger
list listDecimal
list listDuration
list listDateTime
list listDateTimeOnly
list listDateOnly
índice entero
Firmas y tipo devuelto

getListItem(<listInteger>,<index>)

Devuelve un entero.

getListItem(<listDecimal>,<index>)

Devuelve un valor decimal.

getListItem(<listString>,<index>)

Devuelve una cadena.

getListItem(<listDateTimeOnly>,<index>)

Devuelve una fecha y hora sin considerar la zona horaria.

getListItem(<listDateTime>,<index>)

Devuelve una fecha y hora.

getListItem(<listDateOnly>,<index>)

Devuelve una lista de fechas.

getListItem(<listBoolean>,<index>)

Devuelve un valor booleano.

getListItem(<listDuration>,<index>)

Devuelve una duración.

Ejemplos

getListItem([10, 2, 3], 1)

Devuelve “2”

getListItem(["A", "B", "C"], 2)

Devuelve “C”

Ejemplos con un campo de evento “event.appVersion” con valor: “20.45.2.3434”

split(@event{event.appVersion}, "\\.")

Devuelve ["20", "45", "2", "3434"]

getListItem(split(@event{event.appVersion}, "\\."), 0)

Devuelve “20”

en in

Comprueba si el primer valor del argumento está en la lista. La comprobación se realiza mediante un valor Equal en cada argumento value. Devuelve true si se encuentra el valor del argumento; en caso contrario, devuelve false.

El tipo de <expression> debe coincidir con los elementos de la lista. Los tipos de elementos de la lista, como recordatorio, deben coincidir entre sí.

Sintaxis
in(<parameters>)
Parámetros
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 8-row-2 9-row-2 10-row-2 11-row-2 12-row-2 13-row-2 14-row-2 15-row-2
Parámetro Tipo
Cadena Cadena
Booleano Booleano
Número entero Número entero
Decimal Decimal
Duración Duración
Fecha/Hora Fecha/Hora
DateTimeOnly DateTimeOnly
Lista listString
Lista listBoolean
Lista listInteger
Lista listDecimal
Lista listDuration
Lista listDateTime
Lista listDateTimeOnly
Lista listDateOnly
Firma y tipo devuelto

in(<integer>,<listInteger>)

in(<decimal>,<listDecimal>)

in(<string>,<listString>)

in(<boolean>,<listBoolean>)

in(<dateTimeOnly>,<listDateTimeOnly>)

in(<dateTime>,<listDateTime>)

in(<dateOnly>,<listDateOnly>)

in(<duration>,<listDuration>)

Devuelve un valor booleano.

Ejemplos

in(4,[4,5,3,4])

Devuelve verdadero.

in(8,[4,5,3,4])

Devuelve falso.

in(#{ExperiencePlatform.ProfileFieldGroup.profile.person.gender}, ["male"])

intersect intersect

Devuelve los valores comunes de las dos listas de entrada. Si una de las dos listas es nula, devuelve una lista vacía.

Sintaxis
intersect(<parameters>)
Parámetros
table 0-row-2 1-row-2 2-row-2
Parámetro Tipo
lista 1 list
lista 2 list
Firmas y tipos devueltos

intersect(listString,listString): listString

intersect(listDecimal,listDecimal): listDecimal

intersect(listInteger,listInteger): listInteger

intersect(listDateTime,listDateTime): listDateTime

intersect(listDateTimeOnly,listDateTimeOnly): listDateTimeOnly

intersect(listDateOnly,listDateOnly): listDateOnly

intersect(listDuration,listDuration): listDuration

intersect(listBoolean,listBoolean): listBoolean

Devuelve una lista.

Ejemplos
code language-json
intersect(
    ["sports", "news", "documentary"],
    ["sports", "movies", "documentary"]
)

Devuelve [“deportes”, “noticias”]

code language-json
intersect(
    #{ExperienceDataPlatform.profile.interests},
    ["sports", "documentary"]
)

Devuelve elementos comunes entre atributos de perfil y una lista de categorías determinada.

code language-json
intersect(
    #{ExperienceDataPlatform.profile.interests},
        @event{myEvent.sport_interests}
)

Devuelve elementos comunes entre atributos de perfil y un campo de evento determinado.

límite limit

Devuelve los primeros o últimos elementos N de una lista.

Sintaxis
limit(<parameters>)
Parámetros
table 0-row-3 1-row-3 2-row-3 3-row-3
Parámetro Tipo Descripción
listToProcess listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly o listObject Lista a considerar. Para listObject, debe ser una referencia de campo.
numberOfItems entero Número de elementos que se van a devolver de la lista determinada.
firstOrLastItems Booleano Este parámetro es opcional (true de forma predeterminada). true devuelve los primeros elementos. false devuelve los últimos elementos.
Firma y tipo devuelto

limit(<listString>,<integer>)

limit(<listString>,<integer>,<boolean>)

Devuelve una lista de cadenas.

limit(<listInteger>,<integer>)

limit(<listInteger>,<integer>,<boolean>)

Devuelve una lista de enteros.

limit(<listDecimal>,<integer>)

limit(<listDecimal>,<integer>,<boolean>)

Devuelve una lista de decimales.

limit(<listBoolean>,<integer>)

limit(<listBoolean>,<integer>,<boolean>)

Devuelve una lista de valores booleanos.

limit(<listDateOnly>,<integer>)

limit(<listDateOnly>,<integer>,<boolean>)

Devuelve una lista de fechas.

limit(<listDateTimeOnly>,<integer>)

limit(<listDateTimeOnly>,<integer>,<boolean>)

Devuelve una lista de horas de fecha sin tener en cuenta la zona horaria.

limit(<listDateTime>,integer>)

limit(<listDateTime>,<integer>,<boolean>)

Devuelve una lista de fechas y horas.

limit(<listDuration>,<integer>)

limit(<listDuration>,<integer>,<boolean>)

Devuelve una lista de duraciones.

limit(<listObject>,<integer>)

limit(<listObject>,<integer>,<boolean>)

Devuelve una lista de objetos.

Ejemplos

limit(["A", "B", "C", "D", "E"], 3)

Devuelve ["A","B","C"].

limit(["A", "B", "C", "D", "E"], 3, false)

Devuelve ["C","D","E"].

listSize listSize

Cuenta el número de elementos de la lista.

Sintaxis
listSize(<parameters>)
Parámetros
table 0-row-3 1-row-3
Parámetro Tipo Descripción
listToProcess listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly o listObject Lista para procesar. Para listObject, debe ser una referencia de campo. Un listObject no puede contener un objeto nulo.
Firmas y tipo devuelto

listSize(<listInteger>)

listSize(<listDecimal>)

listSize(<listString>)

listSize(<listBoolean>)

listSize(<listDateTimeOnly>)

listSize(<listDateTime>)

listSize(<listDateOnly>)

listSize(<listDuration>)

Devuelve un entero.

listSize(<listObject>)

Ejemplos

listSize([10,2,3])

Devuelve 3.

listSize(@event{my_event.productListItems})

Devuelve el número de objetos de una matriz determinada de objetos (tipo listObject).

mergeLists mergeLists

Combina dos listas. Cuando deduplicate tiene true, devuelve la unión de las dos listas con los valores duplicados eliminados. Cuando deduplicate tiene false, devuelve la concatenación de las dos listas (los elementos de la lista 1 seguidos de los elementos de la lista 2), conservando los duplicados. Las entradas nulas se omiten.

Nota: El parámetro deduplicate debe ser un literal true o false, no una expresión booleana dinámica.

Sintaxis
mergeLists(<parameters>)
Parámetros
table 0-row-3 1-row-3 2-row-3 3-row-3
Parámetro Tipo Descripción
lista 1 listString, listInteger, listDecimal, listBoolean, listDuration, listDateTime, listDateTimeOnly o listDateOnly Primera lista. Sus elementos se agregan primero al resultado.
lista 2 Mismo tipo que la lista 1. Segunda lista. Sus elementos se agregan después de los elementos de la lista 1.
deduplicar literal booleano true devuelve la unión de ambas listas con duplicados eliminados. false devuelve la concatenación de ambas listas, conservando los duplicados. Debe ser un literal true o false.
Firmas y tipos devueltos

mergeLists(listString,listString,boolean): listString

mergeLists(listInteger,listInteger,boolean): listInteger

mergeLists(listDecimal,listDecimal,boolean): listDecimal

mergeLists(listBoolean,listBoolean,boolean): listBoolean

mergeLists(listDuration,listDuration,boolean): listDuration

mergeLists(listDateTime,listDateTime,boolean): listDateTime

mergeLists(listDateTimeOnly,listDateTimeOnly,boolean): listDateTimeOnly

mergeLists(listDateOnly,listDateOnly,boolean): listDateOnly

Ejemplos
code language-json
mergeLists(['a','b'], ['b','c'], true)

Devuelve ['a','b','c'].

code language-json
mergeLists(['a','b'], ['b','c'], false)

Devuelve ['a','b','b','c'].

serializeList serializeList

Convierte una lista determinada (cualquier tipo excepto listObject) en una cadena.

Sintaxis
serializeList(<parameters>)
Parámetros
table 0-row-3 1-row-3 2-row-3 3-row-3
Parámetro Tipo Descripción
listToProcess listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly Lista para convertir en cadena.
separador cadena Separador entre cada elemento de lista en la cadena de salida.
addQuotes Booleano Este parámetro indica si cada elemento de la cadena de salida debe incluir comillas (true) o no (false).
Firma y tipo devuelto

serializeList(<listInteger>,<string>,<boolean>)

serializeList(<listDecimal>,<string>,<boolean>)

serializeList(<listString>,<string>,<boolean>)

serializeList(<listBoolean>,<string>,<boolean>)

serializeList(<listDateTimeOnly>,<string>,<boolean>)

serializeList(<listDateTime>,<string>,<boolean>)

serializeList(<listDateOnly>,<string>,<boolean>)

serializeList(<listDuration>,<string>,<boolean>)

Devolver una cadena.

Ejemplos

serializeList(["Hello","World"], " ", false)

Devuelve “Hello World”.

serializeList(["Hello", "World"], ",", true)

Devuelve “Hello”,“World”.

ordenar sort

Ordena una lista de valores u objetos en orden natural.

Sintaxis
sort(<parameters>)
Parámetros
table 0-row-3 1-row-3 2-row-3 3-row-3
Parámetro Tipo Descripción
listToSort listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly o listObject Lista para ordenar. Para listObject, debe ser una referencia de campo.
keyAttributeName cadena Este parámetro solo es para listObject. El nombre del atributo en los objetos de la lista dada se utiliza como clave para ordenar.
sortingOrder Booleano Ascendente (true) o descendente (false)
Firma y tipo devuelto

sort(<listInteger>,<boolean>)

Devuelve una lista de enteros.

sort(<listDecimal>,<boolean>)

Devuelve una lista de decimales.

sort(<listString>,<boolean>)

Devuelve una lista de cadenas.

sort(<listDateTimeOnly>,<boolean>)

Devuelve una lista de horas de fecha sin tener en cuenta la zona horaria.

sort(<listDateTime>,<boolean>)

Devuelve una lista de fechas y horas.

sort(<listDateOnly>,<boolean>)

Devuelve una lista de fechas.

sort(<listBoolean>,<boolean>)

Devuelve una lista de valores booleanos.

sort(<listObject>,<string>,<boolean>)

Devuelve una lista de objetos.

Ejemplos

sort(["A", "C", "B"], true)

Devuelve ["A","B","C"].

sort([1, 3, 2], false)

Devuelve [3, 2, 1].

sort(@event{my_event.productListItems}, "SKU", true)

Devuelve el listObject ordenado por atributo SKU (orden ascendente)

Referencia de conocimientos de AI

Esta sección contiene conocimientos estructurados destinados a apoyar la interpretación, la recuperación y la respuesta a preguntas relacionadas con este tema.

Para una comprensión completa, esta información debe combinarse con la documentación de esta página. Ninguna de las fuentes pretende ser independiente; la página describe la función, mientras que esta sección proporciona contexto adicional que ayuda a desambiguar la terminología, la intención, la aplicabilidad y las restricciones.

  • TL;DR: Esta página documenta todas las funciones de lista disponibles en las expresiones de recorrido de AJO, y abarca cómo filtrar, ordenar, deduplicar, comprobar suscripciones, limitar, serializar, combinar, restar y buscar intersecciones de listas y matrices.

Intenciones:

  • Quitar valores duplicados de una lista mediante distinct (omitiendo valores nulos) o distinctWithNull (conservando valores nulos)
  • Filtre un listObject para devolver únicamente objetos que coincidan con valores de clave específicos mediante filter
  • Recuperar un elemento en un índice específico de una lista utilizando getListItem
  • Comprobar si existe un valor en una lista con in
  • Buscar elementos comunes entre dos listas utilizando intersect
  • Combine dos listas, con o sin anulación de duplicación, usando mergeLists
  • Restar una lista de otra (establecer diferencia) usando differenceLists
  • Devolver los primeros o últimos elementos N de una lista utilizando limit
  • Contar el número total de elementos de una lista utilizando listSize
  • Convertir una lista en una cadena delimitada usando serializeList
  • Ordenar una lista en orden ascendente o descendente utilizando sort

Glosario:

  • listObject: una lista de objetos complejos que debe ser una referencia de campo; no puede contener objetos nulos (específicos del producto)
  • keyAttributeName: parámetro de cadena opcional utilizado con distinct, filter y sort para identificar qué atributo de objeto usar para la deduplicación, el filtrado o la ordenación (específico del producto)
  • intersect: una operación set devuelve solamente los elementos presentes en ambas listas de entrada
  • mergeLists: Una operación set que devuelve la unión (deduplicada) o concatenación (con duplicados) de dos listas, según el parámetro deduplicate (específico del producto)
  • differenceLists: Una operación set devuelve los elementos de la primera lista que no están presentes en la segunda lista (específica del producto)

Protecciones:

  • distinctWithNull no admite el tipo de parámetro <listObject>
  • filter requiere que el parámetro listObject sea una referencia de campo, no un literal en línea
  • listSize en un listObject requiere que la lista sea una referencia de campo; un listObject no puede contener objetos nulos
  • serializeList no admite el tipo listObject
  • mergeLists y differenceLists solo admiten tipos de listas escalares (cadena, entero, decimal, booleano, dateTime, dateTimeOnly, dateOnly, duration); no se admite listObject
  • El parámetro deduplicate de mergeLists debe ser un literal true/false, no una expresión booleana dinámica
  • differenceLists siempre anula la duplicación de su resultado; no hay opción de conservar duplicados

Terminología:

  • Nombre canónico: Funciones de lista — Acrónimo: none — variantes: funciones de colección, funciones de matriz
  • Sinónimos: “listSize” = “count list elements”; “serializeList” = “join list to string”
  • No confunda: “distinct” (ignora los valores nulos) ≠ “distinctWithNull” (conserva null como valor distinto)
  • No confunda: “limit” con el tercer parámetro true (devuelve los primeros N elementos) ≠ “limit” con false (devuelve los últimos N elementos)
  • No confunda: “intersect” (elementos comunes entre dos listas) ≠ “filter” (elementos que coinciden con valores clave específicos)
  • No confunda: “mergeLists” (combina dos listas, unión o concatenación) ≠ “differenceLists” (resta una lista de otra) ≠ “intersect” (solo elementos comunes)

PREGUNTAS MÁS FRECUENTES:

  • Q: ¿Cómo obtengo los primeros 3 elementos de una lista? — Use limit(myList, 3) o limit(myList, 3, true); el valor predeterminado es devolver los primeros elementos.
  • Q: ¿Cómo obtengo los últimos 3 elementos de una lista? — Usar limit(myList, 3, false).
  • Q: ¿Cuál es la diferencia entre distinct y distinctWithNull?distinct ignora los valores nulos y los excluye del resultado; distinctWithNull trata el valor nulo como un valor distinto e incluye una entrada nula si hay valores nulos.
  • Q: ¿Puedo filtrar una lista de cadenas con filter? — No, filter solo funciona en listObject; para las listas escalares, use in o distinct para la deduplicación.
  • Q: ¿Cómo puedo comprobar si un valor está en una lista? — Use in(value, myList), que devuelve true si el valor se encuentra en la lista.
  • Q: ¿Puedo ordenar un listObject por un atributo específico? — Sí, usar sort(@event{...}, "attributeName", true), donde el segundo parámetro es el nombre del atributo y el tercero es la dirección de ordenación (verdadero = ascendente).
  • Q: ¿Cómo combino dos listas y elimino duplicados? — Usar mergeLists(list1, list2, true).
  • Q: ¿Cómo se combinan dos listas pero se mantienen los valores duplicados? — Usar mergeLists(list1, list2, false).
  • Q: ¿Cómo encuentro los elementos de una lista que no están en otra? — Use differenceLists(list1, list2), que devuelve los elementos de list1 que no están presentes en list2.
  • Q: ¿Cuál es la diferencia entre intersect y differenceLists?intersect devuelve elementos comunes a ambas listas; differenceLists devuelve elementos de la primera lista que están ausentes de la segunda.
recommendation-more-help
journey-optimizer-help