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?
Can you use objects as Object keys in JavaScript? # The short answer is "no". All JavaScript object keys are strings.
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
}
}
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
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
Try findKey() lodash method:
var key = _.findKey(c, v => v === val)
where val - property value.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With