1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
# 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`
```javascript
var StringMap = require("stringmap");
var sm1 = new StringMap();
sm1.set("greeting", "yoyoma");
sm1.set("check", true);
sm1.set("__proto__", -1);
console.log(sm1.has("greeting")); // true
console.log(sm1.get("__proto__")); // -1
sm1.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}
var sm2 = new StringMap({
one: 1,
two: 2,
});
console.log(sm2.map(function(value, key) {
return value * value;
})); // [ 1, 4 ]
sm2.forEach(function(value, key) {
// ...
});
console.log(sm2.isEmpty()); // false
console.log(sm2.size()); // 2
var sm3 = 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
```javascript
var StringMap = require("stringmap");
```
### Browser
Clone the repo and include it in a script tag
git clone https://github.com/olov/stringmap.git
```html
<script src="stringmap/stringmap.js"></script>
```
|