Saltar al contenido

Combinar arreglos en Ruby/Rails

Este artículo fue evaluado por especialistas así se asegura la exactitud de esta reseña.

Solución:

¿Como esto?

⚡️ irb
2.2.2 :001 > [1,2,3] + [4,5,6]
 => [1, 2, 3, 4, 5, 6] 

Pero no tienes 2 matrices.

Podrías hacer algo como:

@movie = Movie.first()
@options = Movie.order("RANDOM()").first(3).to_a << @movie

Hay dos partes en esta pregunta:

  1. ¿Cómo "fusionar dos matrices"? solo usa el + método:

    [1,2,3] + [2,3,4]
    => [1, 2, 3, 2, 3, 4]
    
  2. ¿Cómo hacer lo que quieres? (Lo que resulta que no es la fusión de dos matrices). Primero analicemos ese problema:

    @movie es una instancia de su Movie modelo, que puede verificar con @movie.class.name.

    @options es un Arrayque puede verificar con @options.class.name.

    Todo lo que necesita saber ahora es cómo agregar un nuevo elemento a un array (es decir, agregue su @movie artículo a su @options array)

    Lo haces usando la pala doble:

    @options << @movie
    

    esto es esencialmente lo mismo que algo como:

    [1,2,3] << 4
    => [1,2,3,4]
    

Para fusionar (hacer la unión de) matrices:

[1, 2, 3].union([2, 4, 6]) #=> [1, 2, 3, 4, 6] (FROM RUBY 2.6)
[1, 2, 3] | [2, 4, 6] #=> [1, 2, 3, 4, 6]

Para concatenar matrices:

[1, 2, 3].concat([2, 4, 6]) #=> [1, 2, 3, 2, 4, 6] (FROM RUBY 2.6)
[1, 2, 3] + [2, 4, 6] #=> [1, 2, 3, 2, 4, 6]

Para agregar un elemento a un array:

[1, 2, 3] << 4 #=> [1, 2, 3, 4]

Pero parece que no tienes arreglos, sino registros activos. Podrías convertirlo en array con to_apero también puedes hacerlo directamente:

Movie.order("RANDOM()").first(3) + [@movie]

que devuelve el array usted quiere.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *