UNPKG

700 BJavaScriptView Raw
1export function extremaBy(source, selector, comparer) {
2 let result = [];
3 const it = source[Symbol.iterator]();
4 const { value, done } = it.next();
5 if (done) {
6 throw new Error('Sequence contains no elements');
7 }
8 let resKey = selector(value);
9 result.push(value);
10 let next;
11 while (!(next = it.next()).done) {
12 const current = next.value;
13 const key = selector(current);
14 const cmp = comparer(key, resKey);
15 if (cmp === 0) {
16 result.push(current);
17 }
18 else if (cmp > 0) {
19 result = [current];
20 resKey = key;
21 }
22 }
23 return result;
24}
25
26//# sourceMappingURL=_extremaby.mjs.map