Start of main content## More like this

Returns the difference between two arrays, after applying the provided function to each array element of both.

- Create a
`Set`

by applying`fn`

to each element in`b`

. - Use
`Array.prototype.map()`

to apply`fn`

to each element in`a`

. - Use
`Array.prototype.filter()`

in combination with`fn`

on`a`

to only keep values not contained in`b`

, using`Set.prototype.has()`

.

```
const differenceBy = (a, b, fn) => {
const s = new Set(b.map(fn));
return a.map(fn).filter(el => !s.has(el));
};
```

```
differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); // [1]
differenceBy([{ x: 2 }, { x: 1 }], [{ x: 1 }], v => v.x); // [2]
```

### Mapped array symmetric difference

JavaScript, Array

Returns the symmetric difference between two arrays, after applying the provided function to each array element of both.

### Mapped array union

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.

### Array intersection based on function

JavaScript, Array

Returns the elements that exist in both arrays, after applying the provided function to each array element of both.