Diferencia simétrica de arrays mapeados

Beginner

This tutorial is from open-source community. Access the source code

Introducción

En este laboratorio, profundizaremos en el concepto de diferencia simétrica y cómo se puede implementar en JavaScript utilizando la función symmetricDifferenceBy(). Exploraremos cómo esta función se puede utilizar para encontrar los valores únicos entre dos arrays después de aplicar una función proporcionada a cada elemento de ambos arrays. Este laboratorio está diseñado para ayudarte a comprender mejor este poderoso método de JavaScript y cómo se puede utilizar en tus propios proyectos.

Diferencia simétrica de arrays mapeados

Para comenzar a codificar, abre la Terminal/SSH y escribe node.

Esta función devuelve la diferencia simétrica entre dos arrays, después de aplicar la función proporcionada a cada elemento de ambos arrays. Aquí cómo funciona:

  • Crea un Set a partir de cada array para obtener los valores únicos de cada uno después de aplicar fn a ellos.
  • Utiliza Array.prototype.filter() en cada uno de ellos para conservar solo los valores no contenidos en el otro.

Aquí está el código de la función symmetricDifferenceBy:

const symmetricDifferenceBy = (a, b, fn) => {
  const sA = new Set(a.map((v) => fn(v))),
    sB = new Set(b.map((v) => fn(v)));
  return [
    ...a.filter((x) => !sB.has(fn(x))),
    ...b.filter((x) => !sA.has(fn(x)))
  ];
};

Puedes utilizar symmetricDifferenceBy de la siguiente manera:

symmetricDifferenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); // [ 1.2, 3.4 ]
symmetricDifferenceBy(
  [{ id: 1 }, { id: 2 }, { id: 3 }],
  [{ id: 1 }, { id: 2 }, { id: 4 }],
  (i) => i.id
);
// [{ id: 3 }, { id: 4 }]

Resumen

¡Felicidades! Has completado el laboratorio de Diferencia simétrica de arrays mapeados. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.