1.0.3 • Published 6 years ago

indexed-filter v1.0.3

Weekly downloads
21,896
License
ISC
Repository
github
Last release
6 years ago

indexed-filter

npm version Build Status Coverage Status

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