Skip to main content

difference

A function that returns a new array containing only the unique values from the first array that are not present in the second array.

By default, comparison is performed only for primitive values. An iteratee function can be provided to transform each element before comparison.


Code

🔗 View source code


Benchmark

  • hz: Operations per second
  • mean: Average response time (ms)

Default

NamehzmeanPerformance
modern-kit/difference9,251,611.330.0001fastest
lodash/difference4,113,377.610.0002slowest
  • modern-kit/difference
    • 2.25x faster than lodash/difference

with iteratee

NamehzmeanPerformance
modern-kit/difference11,133,900.990.0001fastest
lodash/differenceBy3,211,808.450.0002slowest
  • modern-kit/difference
    • 3.47x faster than lodash/differenceBy

Interface

typescript
const difference: <T, U = T>(
firstArr: T[] | readonly T[],
secondArr: T[] | readonly T[],
iteratee?: ((item: T) => U) | undefined
) => T[];

Usage

Basic Usage

typescript
import { difference } from '@modern-kit/utils';

const arr1 = [1, 2, 3, 4];
const arr2 = [2, 4];

difference(arr1, arr2); // [1, 3]

Iteratee Usage

typescript
import { difference } from '@modern-kit/utils';

const arr1 = [
{ id: 1, name: 'john' },
{ id: 2, name: 'dylan' },
{ id: 3, name: 'modern' },
{ id: 4, name: 'gromit' },
];
const arr2 = [
{ id: 2, name: 'john' },
{ id: 4, name: 'gromit' },
];

difference(arr1, arr2, (item) => item.id);
/*
[
{ id: 1, name: 'john' },
{ id: 3, name: 'modern' },
]
*/