El método collection.findIndex( ) devuelve el índice, en la colección, del primer valor para el cual nomMet, aplicado en cada elemento, devuelve true. El método devuelve -1 si ningún elemento de la colección se evaluó como true.
Nota: este método no modifica la colección original.
De forma predeterminada, collection.findIndex( ) busca en toda la colección. Opcionalmente, puede pasar en posicIni el índice del elemento desde el cual comenzar la búsqueda.
- Si posicIni >= longitud de la colección (collection.length), el método devuelve -1 (no se realiza la búsqueda).
- Si posicIni < 0, el fin de la colección se considera como el punto de inicio del cálculo de la posición (posicIni :=posicIni +length).
Nota: incluso si posicIni es negativo, la colección se sigue buscando de izquierda a derecha. - Si posicIni = 0, se busca en toda la colección (por defecto).
En nomMet, pase el nombre del método a usar para evaluar los elementos de la colección, junto con su(s) parámetro(s) en param (opcional). nomMet puede realizar cualquier prueba, usando o no los parámetros. Este método recibe un parámetro Object en $1 y debe establecer $1.result como true para el primer elemento que cumpla la condición.
nomMet recibe los siguientes parámetros:
- en $1.value: valor del elemento a evaluar
- en $2: param
- en $N...: param2...paramN
nomMet define los siguientes parámetros:
- $1.result (booleano): true si el valor del elemento coincide con la condición de búsqueda.
- $1.stop (booleano, opcional): true para detener la retrollamada del método. El valor devuelto es el último calculado.
Usted desea encontrar la posición del primer nombre de la ciudad dentro de una colección:
C_COLLECTION($c)
C_LONGINT($val2;$val3)
$c:=New collection
$c.push(New object("name";"Cleveland";"zc";35049))
$c.push(New object("name";"Blountsville";"zc";35031))
$c.push(New object("name";"Adger";"zc";35006))
$c.push(New object("name";"Clanton";"zc";35046))
$c.push(New object("name";"Clanton";"zc";35045))
$val2:=$c.findIndex("FindCity";"Clanton")
$val3:=$c.findIndex($val2+1;"FindCity";"Clanton")
El código para el método es FindCity:
C_OBJECT($1)
C_TEXT($2)
$1.result:=$1.value.name=$2