javascript - 如何在语义上访问对象键值
问题描述
const COMPUTE_CODES = Object.freeze({
'D+1': '0011111',
'A+1': '0110111',
'D-1': '0001110',
'A-1': '0110010',
'D+A': '0000010',
'D-A': '0010011',
'A-D': '0000111'
// more
})
D+1
如果 key 是or ,我想获取值1+D
,但是由于键很多,我不想添加更多冗余的语义键。
我试图对给定的键进行排序,'1+D'.split('').sort().join('').toUpperCase() // +1D
但它+1D
不是D+1
.
问题是访问所有密钥,而不是D+1
,这是一个具体的例子。
const COMPUTE_CODES = Object.freeze({
'D+1': '0011111',
'1+D': '0011111',
'A+1': '0110111',
'1+A': '0110111',
'D-1': '0001110',
'1-D': '0001110',
'A-1': '0110010',
'1-A': '0110010',
// more
})
我不想这样写。
解决方案
如有必要,您可以使用 aProxy
并使用反向密钥。
const
COMPUTE_CODES = { 'D+1': '0011111', 'A+1': '0110111', 'D-1': '0001110', 'A-1': '0110010', 'D+A': '0000010', 'D-A': '0010011', 'A-D': '0000111' },
codes = new Proxy(COMPUTE_CODES, {
get: function(target, prop, receiver) {
return prop in target
? target[prop]
: target[prop.split(/([+-])/).reverse().join('')];
}
});
console.log(codes['1+D']);
推荐阅读
- vb.net - VB.NET 中的索引超出范围异常
- java - 环境变量是否会传递给从取消配置的 azure vm(linux) 映像创建的新规模集实例
- r - 如何增加geom_text中标签的间隔?
- microsoft-dynamics - 如何通过api获取物品属性?
- java - Maven 创建具有相同依赖项的多模块
- node.js - 如何在本地在机器人框架中添加 LUIS 意图?
- react-native - 如何在本机反应中获取数据?
- django - 如何配置 Traefik 以使用 Django Sites Framework
- javascript - ASP.NET 表单未提交
- python - 如何将多个张量流函数并行应用于同一个张量?