Library that lets you filter an array and keep both pieces
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.
 
Sven Slootweg dd1e088dd5 Initial commit 5 years ago
README.md Initial commit 5 years ago
example.js Initial commit 5 years ago
index.js Initial commit 5 years ago
package.json Initial commit 5 years ago

README.md

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 instead.

Example

"use strict";

const splitFilter = require("./");

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, not just a literal true.

  • array: The array to split.
  • predicate: The function that determines which side to sort the value into.

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 in handling the returned array (like in the example), as this will greatly improve readability of your code.