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