Get indices of a value in an array
Collect every index where a value appears.
function indices({ values, value }) { return values.flatMap((item, i) => (item === value ? [i] : [])); }
Input & expected output
Input
{
"values": [
"a",
"b",
"a",
"c"
],
"value": "a"
}Expected output
[
0,
2
]The edge case
Input
{
"values": [
1,
2
],
"value": 3
}Expected output
[]Know the limits
- The original second variant dropped index 0, because filter(Boolean) removes it; flatMap keeps it.
The function above is the implementation used by the lab. The lab validates JSON types and caps size before execution; include equivalent validation when accepting untrusted input in your application.
Source & maintenance
Based on Get indices of a value in an array from the original 1loc collection by Nguyen Huu Phuoc. Copyright (c) 2020 phuoc-ng. MIT licensed.
Uses flatMap; the original second variant dropped index 0 with filter(Boolean). Original MDX retained as inert source evidence.
Maintained by Oveyon. Source commit: 14b481cf60df. Read the license.
Keep exploring
- Clone an array — Create a new array without copying the objects inside it.
- Remove duplicate values — Keep the first occurrence of each value, in its original order.
- Flatten a nested array — Turn a nested array into one sequence of values.