Get key using value from an object in JavaScript?

39,415

Solution 1

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

Solution 2

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

Solution 3

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

Solution 4

Try findKey() lodash method:

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

where val - property value.

Share:
39,415
Eduard Florinescu
Author by

Eduard Florinescu

Coding my way out of boredom. “If the fool would persist in his folly he would become wise.” (William Blake)

Updated on March 28, 2020

Comments

  • Eduard Florinescu
    Eduard Florinescu over 4 years
    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?