UNPKG

arquero

Version:

Query processing and transformation of array-backed data tables.

53 lines (45 loc) 1.06 kB
import { ascending } from './ascending.js'; import { max } from './max.js'; import { min } from './min.js'; import { quantile } from './quantile.js'; export class ValueList { constructor(values) { this._values = values || []; this._sorted = null; this._start = 0; } values(copy) { if (this._start) { this._values = this._values.slice(this._start); this._start = 0; } return copy ? this._values.slice() : this._values; } add(value) { this._values.push(value); this._sorted = null; } rem() { this._start += 1; this._sorted = null; } min() { return this._sorted && this._sorted.length ? this._sorted[0] : min(this._values, this._start); } max() { return this._sorted && this._sorted.length ? this._sorted[this._sorted.length - 1] : max(this._values, this._start); } quantile(p) { if (!this._sorted) { this._sorted = this.values(true); this._sorted.sort(ascending); } return quantile(this._sorted, p); } }