From 770030e7f61cd5006c67994051d4bfad5ce6c502 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Wed, 17 Mar 2021 13:19:38 -0700 Subject: [PATCH] feat(observable-array): findIndex now supported --- .../__tests__/observable/observable-array.ts | 24 +++++++++++++++++++ packages/core/data/observable-array/index.ts | 9 +++++++ 2 files changed, 33 insertions(+) diff --git a/packages/core/__tests__/observable/observable-array.ts b/packages/core/__tests__/observable/observable-array.ts index 8e2e5df06..a78ecd25f 100644 --- a/packages/core/__tests__/observable/observable-array.ts +++ b/packages/core/__tests__/observable/observable-array.ts @@ -44,4 +44,28 @@ describe('observable-array', () => { assert.equal(0, _array.length); }); }); + + describe('findIndex', () => { + it('finds an item', () => { + const _array = new ObservableArray(); + + _array.push(1); + _array.push(2); + + const index = _array.findIndex((i) => i === 2); + + assert.equal(1, index); + }); + + it('does not find item', () => { + const _array = new ObservableArray(); + + _array.push(1); + _array.push(2); + + const index = _array.findIndex((i) => i === 3); + + assert.equal(-1, index); + }); + }); }); diff --git a/packages/core/data/observable-array/index.ts b/packages/core/data/observable-array/index.ts index 5dafad024..f927bacaa 100644 --- a/packages/core/data/observable-array/index.ts +++ b/packages/core/data/observable-array/index.ts @@ -288,6 +288,15 @@ export class ObservableArray extends Observable { return result; } + /** + * Returns the index of the first element in the array where predicate is true, and -1 otherwise. + * @param predicate + * @param thisArg If provided, it will be used as the this value for each invocation of predicate. If it is not provided, undefined is used instead. + */ + findIndex(predicate: (value: any, index: number, obj: any[]) => unknown, thisArg?: any): number { + return this._array.findIndex(predicate, thisArg); + } + /** * Returns the index of the first occurrence of a value in an array. * @param searchElement The value to locate in the array.