Me gustaría crear un mapa en JavaScript con dos claves o necesito saber si hay una solución mejor. Necesito saber si key1 es parte de la colección y si es así obtener data1 y en otro caso necesito saber si un valor de tipo key2 es parte de la colección y obtener sus datos. ¿Cómo se hace esto en JavaScript?
Ejemplo:
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"}); De momento tengo mapas con información redundante para sacar datos por key_person y key_city . Quiero un mapa conjunto donde pueda filtrar ambas claves a la vez. Gracias
Crearía una clase simple con tal funcionalidad.
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");