De acordo com a documentação do lodash, este método é semelhante a _.difference, exceto que aceita um comparador que é chamado para comparar os elementos do array com os valores. A ordem e as referências dos valores do resultado são determinadas pelo primeiro array. O comparador é chamado com dois argumentos: (arrVal, othVal).
Este desafio exige que você escreva sua própria versão desta função sem usar lodash, para que possa entender melhor como ela funciona.
Usando o exemplo de uma concessionária de automóveis, se você tiver dois estacionamentos e quiser ver quais carros são diferentes, esta função permite verificar cada carro de um estacionamento em relação a cada carro do outro usando uma função de comparação que verifica dois valores e retorna true ou false caso sejam iguais ou não. Assim, você poderia verificar o tamanho do motor e comparar para ver quais carros são diferentes de acordo com o tamanho de seus motores. Se o estacionamento um tiver um carro com motor v6 e o estacionamento dois não tiver nenhum carro com motor v6, essa seria a diferença, e a função retornaria o carro com motor v6.
Há apenas um primeiro array usado para procurar a diferença, mas pode haver muitos arrays de valores usados para comparação.
differenceWith([
{ make: "mazda", engine: "v8" }, // This is the first array we compare with.
{ make: "toyota", engine: "v6" },
],
[{ make: "toyota", engine: "v8" }], // The second array we compare against.
(a, b) => a.engine === b.engine // This is the comparator that compares the two values.
) ➞ [
{ make: "toyota", engine: "v6" }, // This is in the first array but none of the others.
]