From eb6d8a6a2513e2bdab285173bdcebcc31e97a7ba Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Thu, 23 Aug 2018 18:16:17 -0700 Subject: [PATCH] added Table.pick and Table.pickRow helper methods --- src/mol-data/db/table.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/mol-data/db/table.ts b/src/mol-data/db/table.ts index 15fd6aef2..3573c7bd6 100644 --- a/src/mol-data/db/table.ts +++ b/src/mol-data/db/table.ts @@ -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; -- GitLab