UNPKG

rc-js-util

Version:

A collection of TS and C++ utilities to help writing performant and correct applications, achieved through strict typing and (removable) invariant checking.

133 lines (63 loc) 2.04 kB
<!-- Do not edit this file. It is automatically generated by API Documenter. --> [Home](./index.md) &gt; [rc-js-util](./rc-js-util.md) &gt; [arrayBinaryFindInsertionIndex](./rc-js-util.arraybinaryfindinsertionindex.md) ## arrayBinaryFindInsertionIndex() function Performs a bisection search of an 'indexable' object such that if the value were inserted, it would remain in order. **Signature:** ```typescript export declare function arrayBinaryFindInsertionIndex<T>(indexable: T, comparisonValueToSearchFor: number, getComparisonValueAtIndex: TGetComparisonValueAtIndex<T>, length: number, start?: number): number; ``` ## Parameters <table><thead><tr><th> Parameter </th><th> Type </th><th> Description </th></tr></thead> <tbody><tr><td> indexable </td><td> T </td><td> The thing to be searched. This must be sorted ascending. </td></tr> <tr><td> comparisonValueToSearchFor </td><td> number </td><td> The comparison value to find the insertion index for. </td></tr> <tr><td> getComparisonValueAtIndex </td><td> [TGetComparisonValueAtIndex](./rc-js-util.tgetcomparisonvalueatindex.md)<!-- -->&lt;T&gt; </td><td> A function that provides the value for comparison at a given index. </td></tr> <tr><td> length </td><td> number </td><td> The number of elements in the structure `indexable` to search. </td></tr> <tr><td> start </td><td> number </td><td> _(Optional)_ The start index. </td></tr> </tbody></table> **Returns:** number The index to insert the element at, the highest value is the length of the array. ## Remarks The `indexable` parameter must be sorted ascending. Where there are multiple equal values the lowest index will be returned. ## Example ```typescript // searching for the number 2.5 with start index 1 & length 2 const index = arrayBinaryFindInsertionIndex([1, 2, 3, 4], 2.5, (a, i) => a[i], 2, 1); // index is 2 ```