0.0.1 • Published 8 years ago

keysmap v0.0.1

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

keysmap

Multiple keys mapping. Allow none-string keys.

Build Status Coverage Status

what is keysmap

It's map, but a group of multiple keys mapping one value.

eg:

['a', 'b', 'c'] -> v0

['a'] -> v1

['d', 10, {}] -> v2

install

npm i keysmap --save

api

  • var map = keysmap();

create map instance

  • map.set (keys, value, eq)

Keys object is an array. It's element could be anything.

Eq is function, used to compare two key.

eq = (key1, key2) => {};// return true or false;

Keys object is an array. It's element could be anything.

Eq is function, used to compare two key.

Keys object is an array. It's element could be anything.

Eq is function, used to compare two key.

  • map.remove(keys, eq)

Keys object is an array. It's element could be anything.

Eq is function, used to compare two key.

examples

multiple key

var keysmap = require('keysmap')

var map = keysmap();

map.set(['a', 'b', 'c'], 4);

var ret = map.get(['a', 'b', 'c']);

console.log(ret); // 4

empty key

var keysmap = require('keysmap')

var map = keysmap();

map.set([], {a: 1});

var ret = map.get([]);

console.log(ret); // {a: 1}

object keys

var keysmap = require('keysmap')

var map = keysmap();

let obj = {};

map.set([1, obj], 20);

map.get([1, obj]); // 20

custome eq function

var keysmap = require('keysmap');
var jsoneq = require('cl-jsoneq');

var map = keysmap();

map.set(['a', {
    b: 30
}], 300);

map.get(['a', {
    b: 30
}]); // undefined

map.get(['a', {
    b: 30
}], jsoneq); // 300

has and remove api

var keysmap = require('keysmap');
var jsoneq = require('cl-jsoneq');

map.set(['a', 'b'], 20);
map.set([{
    k: 3
}], 20);

map.has(['a', 'b']); // true
map.has([{
    k: 3
}], jsoneq); // true


map.remove(['a', 'b']);
map.remove([{
    k: 3
}], jsoneq);