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.
differenceLists(<parameters>)| 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. |
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
| code language-json |
|---|
|
Devuelve ['a','c'].
| code language-json |
|---|
|
Devuelve ['a','b'].
| code language-json |
|---|
|
Devuelve [].
distinct distinct
Devuelve los distintos valores u objetos de una lista determinada. Las entradas nulas se omiten.
distinct(<parameters>)| 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. |
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.
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.
distinctWithNull(<parameters>)| table 0-row-3 1-row-3 | ||
|---|---|---|
| Parámetro | Tipo | Descripción |
| listToProcess | listString, listBoolean, listInteger, listDecimal, listDuration, listDateTime, listDateTimeOnly, listDateOnly | Lista para procesar. |
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.
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.
filter(<parameters>)| 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 |
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.
Este es un ejemplo de una carga útil pasada en un evento entrante “myevent”:
| code language-json |
|---|
|
Puede utilizar la siguiente expresión:
| code language-json |
|---|
|
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.
getListItem(<parameters>)| 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 |
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.
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í.
in(<parameters>)| 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 |
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.
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.
intersect(<parameters>)| table 0-row-2 1-row-2 2-row-2 | |
|---|---|
| Parámetro | Tipo |
| lista 1 | list |
| lista 2 | list |
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.
| code language-json |
|---|
|
Devuelve [“deportes”, “noticias”]
| code language-json |
|---|
|
Devuelve elementos comunes entre atributos de perfil y una lista de categorías determinada.
| code language-json |
|---|
|
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.
limit(<parameters>)| 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. |
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.
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.
listSize(<parameters>)| 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. |
listSize(<listInteger>)
listSize(<listDecimal>)
listSize(<listString>)
listSize(<listBoolean>)
listSize(<listDateTimeOnly>)
listSize(<listDateTime>)
listSize(<listDateOnly>)
listSize(<listDuration>)
Devuelve un entero.
listSize(<listObject>)
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.
mergeLists(<parameters>)| 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. |
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
| code language-json |
|---|
|
Devuelve ['a','b','c'].
| code language-json |
|---|
|
Devuelve ['a','b','b','c'].
serializeList serializeList
Convierte una lista determinada (cualquier tipo excepto listObject) en una cadena.
serializeList(<parameters>)| 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). |
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.
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.
sort(<parameters>)| 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) |
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.
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)
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) odistinctWithNull(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,filterysortpara 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:
distinctWithNullno admite el tipo de parámetro<listObject>filterrequiere que el parámetro listObject sea una referencia de campo, no un literal en línealistSizeen un listObject requiere que la lista sea una referencia de campo; un listObject no puede contener objetos nulosserializeListno admite el tipolistObjectmergeListsydifferenceListssolo admiten tipos de listas escalares (cadena, entero, decimal, booleano, dateTime, dateTimeOnly, dateOnly, duration); no se admitelistObject- El parámetro
deduplicatedemergeListsdebe ser un literaltrue/false, no una expresión booleana dinámica differenceListssiempre 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” confalse(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)olimit(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
distinctydistinctWithNull? —distinctignora los valores nulos y los excluye del resultado;distinctWithNulltrata 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,filtersolo funciona enlistObject; para las listas escalares, useinodistinctpara 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 delist1que no están presentes enlist2. - Q: ¿Cuál es la diferencia entre
intersectydifferenceLists? —intersectdevuelve elementos comunes a ambas listas;differenceListsdevuelve elementos de la primera lista que están ausentes de la segunda.