You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.2 KiB
Markdown
65 lines
2.2 KiB
Markdown
# split-filter
|
|
|
|
Like `Array#filter`, but you get to keep both pieces. Quite literally. Splits the array by a predicate function.
|
|
|
|
If you want to split an array into *more than two* arrays, you'll want to use [`split-filter-n`](https://www.npmjs.com/package/split-filter-n) instead.
|
|
|
|
## Example
|
|
|
|
```js
|
|
"use strict";
|
|
|
|
const splitFilter = require("split-filter");
|
|
|
|
function isEven(number) {
|
|
return Math.abs(number) % 2 === 0;
|
|
}
|
|
|
|
let numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8];
|
|
|
|
let [ even, odd ] = splitFilter(numbers, (number) => isEven(number));
|
|
|
|
console.log(even); // [ 0, 2, 4, 6, 8 ]
|
|
console.log(odd); // [ 1, 3, 5, 7 ]
|
|
```
|
|
|
|
## API
|
|
|
|
### splitFilter(array, predicate)
|
|
|
|
Splits the `array` into a truthy and a falsy side, based on what the `predicate` function returns. Note that like `Array#map`, whether a value 'matches' depends on whether the returned value is [__truthy__](https://developer.mozilla.org/en-US/docs/Glossary/Truthy), not just a literal `true`.
|
|
|
|
- __array:__ The array to split.
|
|
- __predicate:__ The function that determines which side to sort the value into. This predicate function receives two arguments, of which you'll usually only need the first one:
|
|
- __value:__ The value itself.
|
|
- __index:__ The index of the value in the array you've provided.
|
|
|
|
Returns an array with two elements:
|
|
|
|
- __0:__ The elements that __matched__ the predicate function (ie. for which the predicate function returned a truthy value).
|
|
- __1:__ The elements that __did not match__ the predicate function (ie. returned a falsy value).
|
|
|
|
It's strongly recommended to use [array destructuring](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Array_destructuring) in handling the returned array (like in the example), as this will greatly improve readability of your code.
|
|
|
|
## Changelog
|
|
|
|
### 1.1.3 (February 17, 2020)
|
|
|
|
- Fixed repository URL in package.json
|
|
|
|
### 1.1.2 (August 26, 2019)
|
|
|
|
- Fixed changelog formatting
|
|
|
|
### 1.1.1 (August 26, 2019)
|
|
|
|
- Fixed incorrect `require` in documentation example.
|
|
|
|
### 1.1.0 (August 19, 2019)
|
|
|
|
- __New:__ Predicate function now also receives the index of the value as an argument, not just the value itself.
|
|
|
|
### 1.0.0 (August 19, 2019)
|
|
|
|
Initial release.
|