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}

キーを使用して値を取得するのは簡単です。すべての値が一意であることを考えると、値 (エラーコード) からキー (メッセージ) を安全に取得できることを考えると、キーを使用しc["UNKNOWN_ERR"]て get を取得するだけです。0

それを行う標準的な方法はありますか、それともすべてのキーを調べてその特定の値を検索する関数を書く必要がありますか?

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 に答える