使用JavaScript创建带有两个键的映射表。

3
我想在JavaScript中创建一个具有两个键的地图,或者需要知道是否有更好的解决方案。我需要知道key1是否是集合的一部分,如果是,则获取data1;在另一种情况下,我需要知道类型为key2的值是否是集合的一部分,并获取其数据。如何在JavaScript中实现这个功能?
示例:
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"});

目前我有一些地图,其中包含冗余信息以便通过 key_personkey_city 获取数据。我想要一个联合地图,可以同时过滤这两个关键字。谢谢。


2
为什么不使用一个包含所有信息的对象?然后,您可以通过任何对象属性找到您的对象。 - Babis.amas
1个回答

2
我会创建一个具有这种功能的简单类。
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");

谢谢,另一个问题:如何遍历它? 对于(var key in this.mapping){ 而 mapping 是一个数组 - Boellner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接