Unión e intersección de arreglos

Crea una función que reciba dos arreglos y devuelva un arreglo de intersección y un arreglo de unión.

  1. Arreglo de intersección: elementos compartidos por ambos.
  2. Arreglo de unión: elementos que existen en el primer o segundo arreglo, o en ambos (no una OR exclusiva).

Aunque los arreglos de entrada pueden contener números duplicados, los arreglos de intersección y unión devueltos deben estar convertidos en conjuntos; es decir, no deben contener duplicados. Los arreglos devueltos deben estar ordenados de forma ascendente.

Array 1: [5, 6, 6, 6, 8, 9]
Array 2: [3, 3, 4, 4, 5, 5, 8]

Intersection: [5, 8]
// 5 y 8 son los únicos 2 números que existen en ambos arreglos.

Union: [3, 4, 5, 6, 8, 9]
// Cada número existe en al menos uno de los arreglos.

Ejemplos

intersectionUnion([1, 2, 3, 4, 4], [4, 5, 9]) ➞ [[4], [1, 2, 3, 4, 5, 9]]

intersectionUnion([1, 2, 3], [4, 5, 6]) ➞ [[], [1, 2, 3, 4, 5, 6]]

intersectionUnion([1, 1], [1, 1, 1, 1]) ➞ [[1], [1]]

Notas

  • El orden de salida debe ser: [Intersection], [Union].
  • Recuerda que ambos arreglos de salida deben estar en orden ascendente.
  • Cada arreglo de entrada tendrá al menos un elemento.
  • Si ambos arreglos son disjuntos (no comparten ningún elemento), devuelve un arreglo vacío [] para la intersección.