Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get key using value from an object in JavaScript?

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?

like image 750
Eduard Florinescu Avatar asked Nov 07 '12 16:11

Eduard Florinescu


People also ask

Can you use an object as a key JavaScript?

Can you use objects as Object keys in JavaScript? # The short answer is "no". All JavaScript object keys are strings.


4 Answers

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
    }
}
like image 85
ThiefMaster Avatar answered Oct 11 '22 22:10

ThiefMaster


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
like image 20
Fareed Alnamrouti Avatar answered Oct 11 '22 22:10

Fareed Alnamrouti


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

like image 41
Pratik Avatar answered Oct 11 '22 23:10

Pratik


Try findKey() lodash method:

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

where val - property value.

like image 42
ns16 Avatar answered Oct 12 '22 00:10

ns16