This package provides class JsonMap<K,V> which has interface similar to Map<K,V> but keys could be Objects.
npm install @lexriver/json-map
import { JsonMap } from '@lexriver/json-map' // create new map with key type {name:string, age:number} and number as a value
let valueByPerson = new JsonMap<{name:string, age:number}, number>()
valueByPerson.set({name:'John', age: 10}, 100)
valueByPerson.set({name:'Smith', age: 20}, 200)
valueByPerson.get({name:'John', age: 10}) // 100
valueByPerson.get({name:'John', age: 20}) // undefined
valueByPerson.get({name:'Smith', age: 20}) // 200
valueByPerson.get({name:'smith', age: 20}) // undefined let myMap = new JsonMap<K, V>()K and V could be of any type including Object
const myMap = new JsonMap<Object, number>()
for(const [key,value] of myMap){
// ...
}
// or...
for(const [key,value] of myMap.entiries()){
// ...
}
// or...
myMap.forEach((key:Object, value:number) => {
// ...
})Get value by key. Returns undefined if key not found.
myMap.get({name:'John', age:10})Create or update value for key.
myMap.set({name:'John', age:10}, 100)Check if map has a key.
myMap.has({name:'John', age:10})Delete one item by key.
myMap.delete({name:'John', age:10})Remove all items from map.
myMap.clear()Get count of items in map.
myMap.sizeGet all keys in map.
for(const key of myMap.keys()){
//...
}Get all values in map.
for(const value of myMap.values()){
// ...
}Get map as array.
myMap.toArray()Fill map with keys and values from array.
myMap.initFromArray(mySavedArray)Get map as json string.
myMap.toJsonString(true)Fill map with keys and values from json string.
myMap.initFromJsonString(mySavedJsonString)