UNPKG

iter-tools-es

Version:
43 lines (34 loc) 779 B
const { iterableCurry } = require('../../internal/iterable.js'); const { defaultCompareOrder } = require('../../internal/compare.js'); const { Heap } = require('./internal/heap.js'); function* __takeSorted(source, n = Infinity, compare = defaultCompareOrder) { const heap = new Heap(compare); for (const value of source) { heap.push(value); if (heap.size > n) { heap.pop(); } } while (heap.size) { yield heap.pop(); } } exports.__takeSorted = __takeSorted; const takeSorted = /*#__PURE__*/iterableCurry(__takeSorted, { minArgs: 0, maxArgs: 2, validateArgs(args) { if (typeof args[1] === 'function') { const temp = args[2]; args[2] = args[1]; args[1] = temp; } } }); exports.takeSorted = takeSorted;