Get key using value from an object in JavaScript?
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.
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, 2020Comments
-
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 get0
, 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?