Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

13 Commits

Repository files navigation

stringmap.js

A fast and robust stringmap implementation that can hold any string keys, including __proto__, with minimal overhead compared to a plain object. Works in node and browsers.

The API is created to be as close to the ES6 Map API as possible. Prefer sm.remove("key") for deleting a key. ES6 Map uses map.delete("key") instead and for that reason sm['delete']("key") is available as a stringmap alias as well. Never do sm.delete("key") unless you're certain to be in the land of ES5 or later.

Examples

Available in examples.js

varStringMap=require("stringmap");varsm1=newStringMap();sm1.set("greeting","yoyoma");sm1.set("check",true);sm1.set("__proto__",-1);console.log(sm1.has("greeting"));// trueconsole.log(sm1.get("__proto__"));// -1sm1.remove("greeting");console.log(sm1.keys());// [ 'check', '__proto__' ]console.log(sm1.values());// [ true, -1 ]console.log(sm1.items());// [ [ 'check', true ], [ '__proto__', -1 ] ]console.log(sm1.toString());// {"check":true,"__proto__":-1}varsm2=newStringMap({one: 1,two: 2,});console.log(sm2.map(function(value,key){returnvalue*value;}));// [ 1, 4 ]sm2.forEach(function(value,key){// ...});console.log(sm2.isEmpty());// falseconsole.log(sm2.size());// 2varsm3=sm1.clone();sm3.merge(sm2);sm3.setMany({a: {},b: [],});console.log(sm3.toString());// {"check":true,"one":1,"two":2,"a":{},"b":[],"__proto__":-1}

Installation

Node

Install using npm

npm install stringmap
varStringMap=require("stringmap");

Browser

Clone the repo and include it in a script tag

git clone https://github.com/olov/stringmap.git
<scriptsrc="stringmap/stringmap.js"></script>

About

Fast and robust stringmap for JavaScript

Resources

Stars

35 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages