2017-09-27 6 views
1

ハッシュマップを使って特定のキーに対応する値と特定の値に対応するキーを検索できる構造を作成し終わった。しかし、私はこのような構成に名前があるかの実装例任意の設計原理/パターンここでキーと値の両方で検索できる構造体の名前は何ですか?

の一部されているかどうかを知りません:

import { fromArrays } from './objectUtils'; 

export default class Dict { 
    constructor(obj) { 
     this.map = obj; 
     this._keys = Object.keys(obj); 
     this._values = Object.values(obj) 
     this.reversed = fromArrays(this._values, this._keys) 
    } 

    getKeyFor(value) { 
     return this.reversed[value] 
    } 

    getValue(key) { 
     return this.map[key] 
    } 

    hasValue(value) { 
     return this.reversed.hasOwnProperty(value) 
    } 

    get keys() { 
     return this._keys 
    } 

    get values() { 
     return this._values 
    } 

    get object() { 
     return this.map 
    } 
} 

私はDictのそれを呼んだが、私はノーを持って正直に言うとどのようにそれを呼び出すアイデア。 ご覧のとおり、カプセル化されるオブジェクトを提供する必要があります。 実装はあまりうまくいかず、非固有値などのように正しく動作しない状況がありますが、現在の私の場合はこれが起こらないはずですので、私にとっては問題ではありません。

しかし、このタイプの構成についてのドキュメントがある場合は、それについて学びたいと思います。私はその機能についてグーグルで試してみましたが、インターネットにはマップやオブジェクトの仕方や配列の検索方法に関する質問やチュートリアルが膨れています。

ありがとうございます。

+0

Javaでは、https://stackoverflow.com/questions/3430170/how-to-create-a-2-way-map-in-java – dev8080

答えて

0

Javascriptでこのようなネイティブ構造はありませんが、this implementation of a BiMapをチェックしてください。私はそれがあなたが探しているものを与えるだろうと思う。

ノードパッケージにインストールする場合は、npm install bimapを使用し、bimap.jsをコードに含めます。そこから、new BiMapを使って新しいBiMapsを作成することができます。

+1

を参照してください。その答えは、BiMap 。 JS実装を指してくれてありがとう – Danielo515

関連する問題