Edu*_*scu 6 javascript object hashmap
c = {
"UNKNOWN_ERR" : 0,
"INDEX_SIZE_ERR" : 1,
"DOMSTRING_SIZE_ERR" : 2,
"HIERARCHY_REQUEST_ERR" : 3,
"WRONG_DOCUMENT_ERR" : 4,
"INVALID_CHARACTER_ERR" : 5,
"NO_DATA_ALLOWED_ERR" : 6,
"NO_MODIFICATION_ALLOWED_ERR" : 7,
"NOT_FOUND_ERR" : 8,
"NOT_SUPPORTED_ERR" : 9}
Run Code Online (Sandbox Code Playgroud)
要使用密钥获取值很简单,我只需使用key in c["UNKNOWN_ERR"]get 0,因为所有值都是唯一的,从值(errorcode)获取密钥(消息)是安全的.
有没有一种标准的方法可以做到这一点,还是我需要编写一个查看所有键并搜索该特定值的函数?
Thi*_*ter 16
正如您已经假设的那样,您需要迭代对象的属性并检查值.
for(var key in c) {
if(c[key] === whatever) {
// do stuff with key
}
}
Run Code Online (Sandbox Code Playgroud)
es6 find方法:
const getKey = (obj,val) => Object.keys(obj).find(key => obj[key] === val);
Run Code Online (Sandbox Code Playgroud)
在你的情况下
console.log(getKey(c,1)); // INDEX_SIZE_ERR
Run Code Online (Sandbox Code Playgroud)
Underscore为此提供了更简单的解决方案
您也可以使用此代码获取密钥
var errKey = _.invert(c)[errCode];
Run Code Online (Sandbox Code Playgroud)
如果你使用errCode = 3,如下所示
var errKey = _.invert(c)[3];
Run Code Online (Sandbox Code Playgroud)
然后
errKey 将会 HIERARCHY_REQUEST_ERR