【发布时间】:2017-09-27 10:41:10
【问题描述】:
我结束了创建一个结构,该结构给定一个哈希图,允许您搜索对应于某个键的值和对应于某个值的键。但我不知道这种结构是否有名称或是否属于任何设计原则/模式
这是一个示例实现:
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,但老实说我不知道如何称呼它。 如您所见,您必须提供一个将被封装的对象。 实现不是很好,并且在某些情况下它无法正常工作,例如对于非唯一值,但在我当前的用例中这不应该发生,所以这对我来说不是问题。
但是,如果有关于这种结构的文档,我想了解它。我尝试在谷歌上搜索这些功能,但互联网上充斥着关于如何映射和对象或如何在数组中查找的问题和教程。
提前致谢。
【问题讨论】:
-
虽然它在 java 中,见stackoverflow.com/questions/3430170/…
标签: javascript