|
@@ -101,6 +101,14 @@ namespace Table {
|
|
|
return ret as Table<R>;
|
|
|
}
|
|
|
|
|
|
+ export function pick<S extends R, R extends Schema>(table: Table<S>, schema: R, test: (i: number) => boolean) {
|
|
|
+ const _view: number[] = []
|
|
|
+ for (let i = 0, il = table._rowCount; i < il; ++i) {
|
|
|
+ if (test(i)) _view.push(i)
|
|
|
+ }
|
|
|
+ return view(table, schema, _view)
|
|
|
+ }
|
|
|
+
|
|
|
export function window<S extends R, R extends Schema>(table: Table<S>, schema: R, start: number, end: number) {
|
|
|
if (start === 0 && end === table._rowCount) return table;
|
|
|
const ret = Object.create(null);
|
|
@@ -194,6 +202,13 @@ namespace Table {
|
|
|
return row;
|
|
|
}
|
|
|
|
|
|
+ /** Pick the first row for which `test` evaluates to true */
|
|
|
+ export function pickRow<S extends Schema>(table: Table<S>, test: (i: number) => boolean) {
|
|
|
+ for (let i = 0, il = table._rowCount; i < il; ++i) {
|
|
|
+ if (test(i)) return getRow(table, i)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
export function getRows<S extends Schema>(table: Table<S>) {
|
|
|
const ret: Row<S>[] = [];
|
|
|
const { _rowCount: c } = table;
|