我结束了创建一个给定hashmap的结构,允许您搜索与某个键对应的值和与某个值对应的键。但我不知道这种结构是否有名称或是否是任何设计原则/模式的一部分
以下是一个示例实现:
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 :(得分:0)
虽然Javascript中没有这样的原生结构,但您可能需要查看this implementation of a BiMap。我想它会给你你想要的东西。
要在Node包中安装,请使用bimap.js
,然后在代码中包含new BiMap
;从那里,您可以使用#controller file
def update
@payment = Payment.find_by(reference_id: params[:reference_id])
if @payment.update(update_params)
@payment.do_something
end
end
创建新的BiMaps。