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 🙏

© 2024 – Pkg Stats / Ryan Hefner

binmap

v1.1.1

Published

Ordered Map (ES Map compatible)

Downloads

14

Readme

npm version build status coverage status greenkeeper badge

binmap

binmap is a Map implementation compatible to the Built-in Map but guaranteeing the keys to be ordered.

The constructor has an optional options object and the class has a member function between for iterating between two boundary keys.

BinMap instances are convertible to and from built-in Maps and Arrays (of sub-arrays).

Functions

Constructor

The constructor works like the built-in Map in that it can optionally take an iterable of key-value pairs (as individual arrays), but can also have an extra optional options object which can contain a comparison function cmp with the same semantics as the custom sort comparator.

import BinMap from 'binmap'

// Custom comparator
const cmp = ( a, b ) => a.length - b.length;

const bm1 = new BinMap( { cmp } );
// or
const bm2 = new BinMap( [ [ 'key1', 'value1' ], ... ], { cmp } );

betwen

between( { ... } ) returns an IterableIterator between two boundary keys. The options object can contain:

  • Either an lt (less than) or an le (less than or equal to).
  • Either a gt (greater than) or a ge (greater than or equal to).
  • reverse being a boolean (defaults to false), which if true returns an iterator from the end to the beginning of the span.

There are two magic values for lt, le, gt and ge which is BinMap.min and BinMap.max which represents the lowest/highest possible values. These are also the default, so an empty between( { } ) (or just between( )) iterates the whole map.

import BinMap from 'binmap'

const bm = new BinMap( [
    [ "a", 1 ],
    [ "b", 2 ],
    [ "c", 3 ],
    [ "d", 4 ],
] );

Array.from( bm.between( { gt: 'b' } ) )
// -> [ [ "c", 3 ], [ "d", 4 ] ]

Array.from( bm.between( { gt: 'b', reverse: true } ) )
// -> [ [ "d", 4 ], [ "c", 3 ] ]