Returns the symmetric difference between two arrays, after applying the provided function to each array element of both.
Set
from each array to get the unique values of each one after applying fn
to them.Array.prototype.filter()
on each of them to only keep values not contained in the other.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)))];
};
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 }]
JavaScript, Array
Returns the difference between two arrays, after applying the provided function to each array element of both.
JavaScript, Array
Returns every element that exists in any of the two arrays at least once, after applying the provided function to each array element of both.
JavaScript, Array
Returns the elements that exist in both arrays, after applying the provided function to each array element of both.