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
Markdown
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) > [rc-js-util](./rc-js-util.md) > [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)<!-- --><T>
</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
```