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

To get the value using the key is easy, I just use the key in c["UNKNOWN_ERR"] to get 0, given that all the values are unique is safe to get the key (message) from the value(errorcode).

Is there a standard way to do that or do I need to write a function that looks in all key and search that specific value?

2

4 Answers 4

18

As you already assumed you need to iterate over the object's attributes and check the value.

for(var key in c) {
    if(c[key] === whatever) {
        // do stuff with key
    }
}
Sign up to request clarification or add additional context in comments.

Comments

13

es6 find method:

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

in your case

console.log(getKey(c,1)); // INDEX_SIZE_ERR

1 Comment

This doesn't work when the value is 0
6

Underscore provides a more easy solution to this

You can get key using this code also

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

for e.x. if you use errCode = 3 as shown below

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

then

errKey will be HIERARCHY_REQUEST_ERR

Comments

2

Try findKey() lodash method:

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

where val - property value.

1 Comment

The original question does not seem to ask about external libraries.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.