-
Notifications
You must be signed in to change notification settings - Fork 249
/
array-util.mjs
39 lines (36 loc) · 1.02 KB
/
array-util.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/**
* returns true if there's at least one element in pLeftArray that's also
* in pRightArray
*
* @param {string[]} pLeftArray an array of strings
* @param {string[]} pRightArray another array of strings
* @return {boolean} true if there's at least one element in pLeftArray also in pRightArray
*/
export function intersects(pLeftArray, pRightArray) {
return pLeftArray.some((pLeftItem) => pRightArray.includes(pLeftItem));
}
export function uniq(pArray) {
return [...new Set(pArray)];
}
/**
* @param {any[]} pArray
* @param {function} pIteratee
* @returns {any[]}
*/
export function uniqBy(pArray, pIteratee) {
return pArray.filter(
(pElement, pIndex, pSelf) =>
pIndex === pSelf.findIndex((pY) => pIteratee(pElement) === pIteratee(pY)),
);
}
/**
* @param {any[]} pArray
* @param {function} pComparator
* @returns {any[]}
*/
export function uniqWith(pArray, pComparator) {
return pArray.filter(
(pElement, pIndex, pSelf) =>
pIndex === pSelf.findIndex((pY) => pComparator(pElement, pY)),
);
}