@writetome51/array-get-indexes-of

Functions that return indexes of items in an array. Optional arguments give you more flexibility than Array.prototype.indexOf()

Usage no npm install needed!

<script type="module">
  import writetome51ArrayGetIndexesOf from 'https://cdn.skypack.dev/@writetome51/array-get-indexes-of';
</script>

README

getIndexOf(
     value, array, whichInstance? = 1
): number

Returns index of value found in array. Returns -1 if value isn't found. Optional
whichInstance specifies which instance of value to search for. By default it's the
first instance. You can set it to a negative number to search from the end.

getIndexesOf(
     value,
     array,
     howMany? = array.length
): number[]

Returns indexes of value in array. If you don't need every index, set howMany to
desired number to speed up execution. You can set howMany to negative number to
search from the end (i.e., -2 gets the last 2 indexes of value).

How an Array is found

If value is Array, identical matching via === is tried first. If there's no match,
value is searched for using this algorithm:
For each i in array:   if array[i] is Array, each item inside array[i] is
checked to see if it matches the item with the same index in value, using the ===
operator. If those two items are both Arrays, the same algorithm is recursively run on
them.

Examples

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10];

getIndexOf(100, arr);
// -->  -1

getIndexOf(10, arr);
// -->  9

// If 'whichInstance' is greater than num indexes available, the last available 
// index is returned.
getIndexOf(10, arr, 4);
// -->  11

// The better way to get the last index:
getIndexOf(10, arr, -1);
// -->  11

getIndexOf(10, arr, -3);
// -->  9

arr = [1, 'h', [3], 1, 'h', [3], 1, 'h', [3], 1, 'h', [3], 1];

getIndexesOf(100, arr);
// -->  []

getIndexesOf(1, arr);
// -->  [0, 3, 6, 9, 12]

// If 'howMany' is greater than num indexes available, it returns all
// indexes available:
getIndexesOf(1, arr, 8);
// -->  [0, 3, 6, 9, 12]

getIndexesOf([3], arr, 2);
// -->  [2, 5]

getIndexesOf([3], arr, -3);
// -->  [5, 8, 11]

Installation

npm i @writetome51/array-get-indexes-of

Loading

import {getIndexOf, getIndexesOf} from '@writetome51/array-get-indexes-of'