¿Tiene Perl una función incorporada para obtener el índice de un elemento en una matriz? ¿O necesito escribir esa función por mi cuenta? [Equivalente a PHP array_search() o JavaScript Array.indexOf()]¿Cómo obtener el índice de un elemento en una matriz?
Respuesta
use List::Util qw(first);
$idx = first { $array[$_] eq 'whatever' } 0..$#array;
(Lista :: Util es el núcleo)
o
use List::MoreUtils qw(firstidx);
$idx = firstidx { $_ eq 'whatever' } @array;
(Lista :: MoreUtils está en CPAN)
Este es definitivamente el camino para ir, 9 veces de cada 10. – Zaid
¿Por qué es esto mejor que su solución, Zaid? – masonk
@masonk: compatibilidad con versiones anteriores para uno. Además, 'first' saldrá del bucle implícito al encontrar el índice que coincida. El equivalente de 'grep' sería' $ idx = grep {$ array [$ _] eq 'whatever' y last} 0 .. $ # array; ', un poco peludo para mi gusto. Y luego está millas por delante en la carrera de velocidad, cuando se ejecuta como 'List :: Util :: XS'. – Zaid
Usted puede escribir una función para esto:
sub array_search {
my ($arr, $elem) = @_;
my $idx;
for my $i (0..$#$arr) {
if ($arr->[$i] eq $elem) {
$idx = $i;
last;
}
}
return $idx;
}
Se devolverá el índice del primer elemento coincidente, o undef
.
Mi solución final: sub array_search { my ($ element, @array) = @_; \t foreach (0 .. $ # array) { if (elemento $ $ [$ _] eq $) { return $ _; } } \t return -1; \t } – powerboy
Aquí hay una forma de hacerlo después de 5.10, con la ventaja adicional de determinar cuántos índices coinciden con el valor dado.
my @matches = grep { $array[$_] ~~ $element } 0 .. $#array;
Si todos los elementos se garantiza que sea único, o simplemente el primer índice es de interés:
my ($index) = grep { $array[$_] ~~ $element } 0 .. $#array;
Esa respuesta no se ajusta a la pregunta. El índice es lo que entra dentro de los corchetes para el acceso a la matriz, entonces: un número entre '0' y' $ # array'. – daxim
@daxim: ¿No estamos después del índice de los partidos aquí? – Zaid
En realidad, la respuesta se ajusta a la pregunta, y muy bien. – masonk
Aquí es una solución autobox
:
use autobox::Core;
my @things = qw/blue black green red green yellow/;
my $first_green = @things->first_index(sub{ $_[0] eq 'green' }); # code block
my $last_green = @things->last_index (qr/^green$/); # or regex
say $first_green; # => 2
say $last_green; # => 4
upvote para autobox hilariousness – masonk
- 1. Cómo obtener el índice de un elemento en una matriz
- 2. PHP - Obtener el índice de un elemento de una matriz
- 3. ¿Cómo obtengo el índice de un elemento en una matriz?
- 4. ¿Cómo obtener el índice de un elemento en un IEnumerable?
- 5. ¿Cómo puedo obtener el índice de un elemento cuando grep a través de una matriz?
- 6. Cómo obtener el índice de un elemento primario en jQuery
- 7. Cómo obtener el índice de un elemento en java.util.Set
- 8. índice del elemento en una matriz multidimensional
- 9. ¿Cómo obtener el índice del elemento al mapear una matriz en Scala?
- 10. Obtener el primer elemento de una matriz de JavaScript dispersa
- 11. Obtener el índice del elemento de una matriz por el valor
- 12. Cómo obtener el índice de un elemento máximo en una matriz numpy a lo largo de un eje
- 13. ¿Cómo obtener el último elemento de una matriz en Ruby?
- 14. Líquido: ¿Puedo obtener un elemento aleatorio de una matriz?
- 15. obtener el índice de jQuery elemento "td"
- 16. ¿Cómo encontrar el índice de un elemento en una lista?
- 17. PD: Obtener índice en una lista de matriz
- 18. Ruby: ¿Cómo encontrar el índice del elemento de matriz mínimo?
- 19. ¿Cómo obtener el índice del elemento en javascript?
- 20. ¿Cómo obtener el primer elemento de una matriz PHP asociativa?
- 21. Perl ¿Cómo obtener el índice del último elemento de referencia de matriz?
- 22. javascript: ¿cómo obtener el índice de un objeto en una matriz asociativa?
- 23. PHP agregar un elemento de una matriz
- 24. Python: encontrar un elemento en una matriz
- 25. Cómo obtener el número de elemento/índice entre hermanos
- 26. jQuery: índice del elemento en la matriz donde el predicado
- 27. PHP: obtener el elemento de matriz
- 28. ¿Cómo ubica un programa el índice de una matriz?
- 29. ¿Cómo obtener el índice de un objeto dentro de una matriz de objetos?
- 30. ¿Cómo encuentro el índice de un elemento en un vector?
Qué hay en la matriz? La búsqueda de una matriz es una bandera roja que me lleva a evaluar si podría estar utilizando una mejor estructura de datos. Recuerde: * ¡hashes * son para buscar! –
Duplicado: http://stackoverflow.com/questions/1915746/in-perl-how-can-i-find-the-index-of-a-given-value-in-an-array – FMc