es-toolkit
Version:
A state-of-the-art, high-performance JavaScript utility library with a small bundle size and strong type annotations.
17 lines (14 loc) • 569 B
JavaScript
import { last } from '../../array/last.mjs';
import { uniq } from '../../array/uniq.mjs';
import { uniqWith } from '../../array/uniqWith.mjs';
import { flattenArrayLike } from '../_internal/flattenArrayLike.mjs';
import { isArrayLikeObject } from '../predicate/isArrayLikeObject.mjs';
function unionWith(...values) {
const lastValue = last(values);
const flattened = flattenArrayLike(values);
if (isArrayLikeObject(lastValue) || lastValue == null) {
return uniq(flattened);
}
return uniqWith(flattened, lastValue);
}
export { unionWith };