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或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
})我不想这样写。
发布于 2020-06-12 08:23:09
如果有必要,您可以使用Proxy并使用反向密钥。
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']);
发布于 2020-06-12 08:19:20
试试给你的钥匙。如果它不存在,将其翻转到+或-字符并尝试。
function get_compute_code(key) {
if (key in COMPUTE_CODES) {
return COMPUTE_CODES[key];
}
// try flipping the key around
key = key.replace(/^(.*)([-+])(.*)/, '$3$2$1')
return COMPUTE_CODES[key];
}发布于 2020-06-12 08:21:46
只需检查直线和反向
function getCode(code){
return COMPUTE_CODES[code] || COMPUTE_CODES[code.split('').reverse().join('')]
}https://stackoverflow.com/questions/62340134
复制相似问题