es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La colección opuesta de “diff” en Laravel.

Tengo 2 colecciones:

$collection = collect([1,2,3,4]);
$collection2 = collect([1,5,6,4]);

con:

$collection->diff($collection2);

obtengo [2,3].

Entonces lo que quiero es tener el valor opuesto, [1,4].

¿Hay alguna forma o método en la colección para hacer esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay un método en Laravel Collection llamado intersect() que devuelve una nueva colección que contiene los valores presentes tanto en la colección original como en el argumento pasado al método. Entonces, en este caso, puedes usar intersect() para obtener el valor opuesto. Así es como se puede hacer:

    $intersect = $collection->intersect($collection2);
    $opposite = $collection->merge($collection2)->diff($intersect);
    

    Aquí, $intersect contendrá [1, 4], que es el valor común entre las dos colecciones. Para obtener el valor opuesto, fusionamos las dos colecciones usando merge() y luego encontramos la diferencia entre la colección fusionada y la colección intersectada usando diff(). $opposite contendrá entonces [2, 3], que es el valor opuesto.

Comments are closed.