Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

create javascript map with two keys

Tags:

javascript

I would like to create a map in JavaScript with two keys or need to know if there is a better solution. I need to know if key1 is part of the collection and if so get data1 and in another case I need to know if a value of type key2 is part of the collection and get its data. How do you do this in JavaScript?

Example:

const contacts = new Map();
contacts.set('key_person',  {phone: "617-555-4321", address: "321 S 2nd St"});

const contacts2 = new Map();
contacts.set('key_city',  {phone: "617-555-4321", address: "321 S 2nd St"});

At the moment I have maps with redundant information in order to get data by key_person and key_city. I want a joint map where I can filter for both keys at a time. Thanks you

like image 399
Boellner Avatar asked Apr 26 '26 19:04

Boellner


1 Answers

I would create a simple class with such functionality.

class DoubleKeyedMap {
  constructor() {
    this.data1 = new Map();
    this.data2 = new Map();
  }
  set(key1, key2, value) {
    this.data1.set(key1, value);
    this.data2.set(key2, value);
  }
  get(key) {
    if (this.data1.get(key) !== undefined) {
      return this.data1.get(key);
    }
    return this.data2.get(key);
  }
  // TODO: clear, delete, has, keys, values, entries
}

const contacts = new DoubleKeyedMap();
contacts.set("key-person", "key-city", {phone: "617-555-4321", address: "321 S 2nd St"});
contacts.get("key-city");
like image 94
BoltKey Avatar answered Apr 28 '26 08:04

BoltKey



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!