UNPKG

@reactivex/ix-es2015-cjs

Version:

The Interactive Extensions for JavaScript

37 lines (35 loc) 1.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extremaBy = void 0; const tslib_1 = require("tslib"); const aborterror_js_1 = require("../aborterror.js"); const withabort_js_1 = require("./operators/withabort.js"); function extremaBy(source, selector, comparer, signal) { return tslib_1.__awaiter(this, void 0, void 0, function* () { (0, aborterror_js_1.throwIfAborted)(signal); let result = []; const it = (0, withabort_js_1.wrapWithAbort)(source, signal)[Symbol.asyncIterator](); const { value, done } = yield it.next(); if (done) { throw new Error('Sequence contains no elements'); } let resKey = yield selector(value, signal); result.push(value); let next; while (!(next = yield it.next()).done) { const current = next.value; const key = yield selector(current, signal); const cmp = yield comparer(key, resKey, signal); if (cmp === 0) { result.push(current); } else if (cmp > 0) { result = [current]; resKey = key; } } return result; }); } exports.extremaBy = extremaBy; //# sourceMappingURL=_extremaby.js.map