Documentaciónbuscar_indices(tabla, campo, valor)
Nombre
buscar_indices - Devuelve todos los indices de los registros que coinciden con un valor.
Sinopsis
info = tablas.buscar_indices(tabla, campo, valor)
Descripcion
Recorre una TABLA y devuelve los indices de todos los registros para los cuales tabla[i][campo] == valor.
Es util para:
- obtener todas las posiciones donde aparece un valor
- separar la busqueda del acceso posterior a los registros
- combinar indices con otras operaciones sobre la tabla original
Comportamiento
- Verifica que el campo exista y tenga un tipo compatible.
- Recorre toda la tabla y acumula los indices BLOX coincidentes.
- Retorna un registro con la cantidad encontrada y un vector de indices.
Funciones API relacionadas
tablas.buscar()tablas.buscar_todos()tablas.buscar_por_valor()tablas.buscar_indice()tablas.buscar_primero_por_valor()tablas.filtrar()
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| tabla | TABLA | Tabla donde buscar. |
| campo | STRING | Campo a comparar. |
| valor | ANY | Valor a buscar. |
Valor de retorno
REGISTRO - Registro con cant (cantidad de coincidencias) e indices (vector de indices BLOX).
Ejemplo
ejemplo.blox
INCLUIR "tablas.api"
INCLUIR "strings.api"
FUNCION PRINCIPAL
INICIO
TABLA amigos, colegas, ret
NUMERICO i, val, cant, idx
STRING campo, valor
VECTOR indices[]
amigos = {
nombre = "Carlos",
edad = 30,
ciudad = "Asuncion"
}
amigos = {
nombre = "Juan",
edad = 21,
ciudad = "Encarnacion"
}
amigos = {
nombre = "Roberto",
edad = 45
ciudad = "Concepcion"
}
amigos = {
nombre = "Maria",
edad = 19
ciudad = "Concepcion"
email = "Maria@blox.com"
}
colegas ={nombre = "Carlos", email = "carlos@blox.com"}
colegas ={nombre = "Ana"}
colegas ={nombre = "Lorena"}
//
// Testado OK
//
// Busca en la tabla "amigos", en el campo "ciudad" las multiples ocurrencias del valor
// "Concepcion".
// Si lo encuentra, almacena sus indices en un vector. (puede encontrar mas de una
// ocurrencia).
// Retorna ese vector y la cantidad de veces que encontro ese valor.
// {cant = ..., indices = ...}
//
campo = "ciudad"
valor = "Concepcion"
ret = tablas.buscar_indices(amigos, campo, valor)
cant = ret.cant
indices = ret.indices
IMPRIMIR ("\n\n\nINDICES - cant = ", cant, "\n")
DEPURAR(indices)
PARA i = 0 HASTA cant-1 HACER
idx = indices[i]
IMPRIMIR(amigos[idx])
FIN_PARA
FINAL