6
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}

使用 key 获取值很容易,我只使用 key inc["UNKNOWN_ERR"]来获取0,假设所有值都是唯一的,可以安全地从 value(errorcode) 中获取 key(message)。

有没有一种标准的方法可以做到这一点,或者我是否需要编写一个查看所有键并搜索该特定值的函数?

4

4 回答 4

18

正如您已经假设您需要遍历对象的属性并检查值。

for(var key in c) {
    if(c[key] === whatever) {
        // do stuff with key
    }
}
于 2012-11-07T16:38:24.513 回答
13

es6find方法:

const getKey = (obj,val) => Object.keys(obj).find(key => obj[key] === val);

在你的情况下

console.log(getKey(c,1)); // INDEX_SIZE_ERR
于 2017-01-10T11:35:12.150 回答
6

下划线为此提供了更简单的解决方案

您也可以使用此代码获取密钥

var errKey = _.invert(c)[errCode];

例如,如果您使用 errCode = 3,如下所示

var errKey = _.invert(c)[3];

然后

errKey将会HIERARCHY_REQUEST_ERR

于 2014-01-24T11:22:05.700 回答
2

尝试findKey() lodash 方法:

var key = _.findKey(c, v => v === val)

其中 val - 属性值。

于 2017-11-21T13:00:48.107 回答