indexed-filter
Array#filter()
with also appending indexes of filtered values to the result
const arr = [1, 'foo', 2, 'bar'];
arr.filter(v => typeof v === 'string');
//=> ['foo', 'bar']
indexedFilter(arr, v => typeof v === 'string');
//=> [{index: 1, value: 'foo'}, {index: 3, value: 'bar'}]
Installation
Use npm.
npm install indexed-filter
API
import indexedFilter from 'indexed-filter';
indexedFilter(array, filterFn [, thisObject])
array: Array
filterFn: Function
thisObject: (any value)
Return: Array
The API is very similar to Array.prototype.filter()
. There are only two differences:
- You pass in the array as the first argument instead of calling the
.filter()
method on the array instance.
- Each filtered result is an object with tow properties,
index
(array index integer) and value
(array element).
indexedFilter([0, [1], [2], '3', [5]], function(val, index, arr) {
return this.isArray(val) && index % 2 === 0 && index < arr.length * 0.5;
}, Array);
//=> [{index: 2, value: [2]}]
License
ISC License © 2018 Shinnosuke Watanabe