25 lines
1.4 KiB
JavaScript
25 lines
1.4 KiB
JavaScript
|
|
const require_difference = require("../../array/difference.js");
|
||
|
|
const require_differenceBy = require("../../array/differenceBy.js");
|
||
|
|
const require_iteratee = require("../util/iteratee.js");
|
||
|
|
const require_isArrayLikeObject = require("../predicate/isArrayLikeObject.js");
|
||
|
|
const require_last = require("./last.js");
|
||
|
|
const require_flattenArrayLike = require("../_internal/flattenArrayLike.js");
|
||
|
|
//#region src/compat/array/differenceBy.ts
|
||
|
|
/**
|
||
|
|
* Computes the difference between an array and multiple arrays using an iteratee function.
|
||
|
|
*
|
||
|
|
* @template T
|
||
|
|
* @param {ArrayLike<T> | null | undefined} arr - The primary array from which to derive the difference.
|
||
|
|
* @param {...any[]} values - Multiple arrays containing elements to be excluded from the primary array.
|
||
|
|
* @returns {T[]} A new array containing the elements that are present in the primary array but not in the values arrays.
|
||
|
|
*/
|
||
|
|
function differenceBy(arr, ..._values) {
|
||
|
|
if (!require_isArrayLikeObject.isArrayLikeObject(arr)) return [];
|
||
|
|
const iteratee$1 = require_last.last(_values);
|
||
|
|
const values = require_flattenArrayLike.flattenArrayLike(_values);
|
||
|
|
if (require_isArrayLikeObject.isArrayLikeObject(iteratee$1)) return require_difference.difference(Array.from(arr), values);
|
||
|
|
return require_differenceBy.differenceBy(Array.from(arr), values, require_iteratee.iteratee(iteratee$1));
|
||
|
|
}
|
||
|
|
//#endregion
|
||
|
|
exports.differenceBy = differenceBy;
|