npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

split-filter

v1.1.3

Published

Like Array#filter, but you get to keep both pieces

Downloads

17

Readme

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("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, 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 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.