3

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

1
  • 2
    Why don't you use 1 object containing all the information? You could then find your object by any of your object's properties Commented Dec 9, 2021 at 19:01

1 Answer 1

2

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");
Sign up to request clarification or add additional context in comments.

1 Comment

thanks, another question: how would iterate through it? for (var key in this.mapping) { and mapping is an array

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.