Digamos que tengo la matriz [1,2,3,1,2,3]
y quiero eliminar la primera instancia de (por ejemplo) 2
de la matriz que da [1,3,1,2,3]
. ¿Cuál es la forma más fácil?Eliminar la primera instancia del elemento coincidente de la matriz
28
A
Respuesta
61
li.delete_at(li.index(n) || li.length)
li[li.length]
está fuera de rango, por lo que el || li.length
Trata el caso en n
no está en la lista.
irb(main):001:0> li = [1,2,3,1,2,3]
=> [1, 2, 3, 1, 2, 3]
irb(main):002:0> li.delete_at(li.index(2) || li.length)
=> 2
irb(main):003:0> li.delete_at(li.index(42) || li.length)
=> nil
irb(main):004:0> li
=> [1, 3, 1, 2, 3]
12
Si || li.length
es evitar el envío de nil
a li.delete_at
(lo que resultaría en un TypeError), a continuación, una versión más fácil podría tener este aspecto
li.delete_at li.index(42) unless li.index(42).nil?
+6
Es probable que desee almacenar 'li.index (42)' en una variable, para evitar hacer la búsqueda dos veces. El rendimiento será mucho mejor para arreglos grandes. – Kelvin
4
Tal vez debería formar parte de stdlib :
class Array
def delete_first item
delete_at(index(item) || length)
end
end
Cuestiones relacionadas
- 1. Seleccione la primera fila coincidente
- 2. elemento eliminar de la matriz
- 3. Eliminar elemento de la matriz y reducir la matriz
- 4. eliminar el primer elemento de la matriz
- 5. NSArray + eliminar elemento de la matriz
- 6. eliminar elemento de la matriz matlab
- 7. La secuencia no contiene ningún elemento coincidente
- 8. Eliminar elemento de la matriz multidimensional según la clave
- 9. Eliminar elemento de la matriz si el valor del elemento contiene el carácter de cadena buscado
- 10. Seleccione la primera instancia de un registro
- 11. Cómo eliminar elemento enésimo de la matriz en mongodb
- 12. eliminar elemento de la matriz en función de su valor?
- 13. PHP: Eliminar el primer y último elemento de la matriz
- 14. PHP | ¿Eliminar elemento de la matriz con reordenamiento?
- 15. Eliminar elemento de la matriz, utilizando el segmento
- 16. ¿Cómo eliminar un elemento de matriz basado en la clave?
- 17. posición del elemento en la matriz
- 18. Mueva el elemento de matriz con determinada clave a la primera posición de una matriz, PHP
- 19. eliminar la primera página del PDF con iTextSharp
- 20. Eliminar la primera palabra de cada línea
- 21. Obtención del puntero para la primera entrada en una matriz
- 22. Cómo eliminar elemento de una matriz
- 23. Eliminar elemento de una matriz normal
- 24. Jquery quitar el elemento de la matriz
- 25. C#: ¿Cómo eliminar la subcadena coincidente entre 2 cadenas?
- 26. ¿No hay coma después del último elemento en la matriz?
- 27. jQuery + ¿Cómo puedo seleccionar solo la primera instancia de cada elemento?
- 28. Eliminar cada elemento n de la cadena
- 29. Eliminar un elemento de una matriz (Java)
- 30. Eliminar fila de la matriz php
Gracias. He estado golpeando mi cabeza tratando de expresar esto elegantemente. –
No entiendo el '|| li.length' ¿Alguien puede explicar – gates
Cualquier valor en ruby se puede tratar como un valor booleano, con solo 'false' y' nil' evaluando como falso. La sintaxis de doble pipa es una taquigrafía conveniente. 'a || b' significa "a, a menos que sea nulo, luego b". – erich2k8