UNPKG

1.03 kBJavaScriptView Raw
1import { vectorDistinctor, objectDistinctor, entriesCounter, objectCounter, sortByValues } from '@aryth/util-distinct';
2import { iterate } from '@vect/vector-mapper';
3
4/**
5 *
6 * @param {*[]} arr
7 * @param {number} [l]
8 * @returns {[any, any][]|[]|any[]|*}
9 */
10
11const distinct = function (arr, l) {
12 let o;
13 return (l = arr === null || arr === void 0 ? void 0 : arr.length) === (l & 0x7f) ? (o = [], iterate(arr, vectorDistinctor.bind(o), l), o) : (o = {}, iterate(arr, objectDistinctor.bind(o), l), Object.keys(o));
14};
15/**
16 *
17 * @param {*[]} arr
18 * @param {string|boolean} [sort=false]
19 * @param {number} [l]
20 * @returns {[any, any][]|[]|any[]|*}
21 */
22
23const distinctCount = function (arr, {
24 sort,
25 l
26}) {
27 let o;
28 const ents = (l = arr === null || arr === void 0 ? void 0 : arr.length) === (l & 0x7f) ? (o = [], iterate(arr, entriesCounter.bind(o), l), o) : (o = {}, iterate(arr, objectCounter.bind(o), l), Object.entries(o));
29 if (sort) sortByValues(ents, sort);
30 return ents;
31};
32
33export { distinct, distinctCount };