Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including binmap with all npm packages installed. Try it out:

var binmap = require("binmap")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

binmap v1.1.1

Ordered Map (ES Map compatible)

npm version build status coverage status greenkeeper badge


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



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 } );


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 ] ]


RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free