1.1 KiB
1.1 KiB
title, tags
| title | tags |
|---|---|
| hasKey | object,intermediate |
Returns true if the target value exists in a JSON object, false otherwise.
Accepts target object as first parameter and list of string keys as second parameter.
Check if the list of keys is non-empty and use Array.prototype.every() to sequentially check
keys from given key list to internal depth of the object. Use Object.prototype.hasOwnProperty() to check if current object does not have
current key or is not an object at all then stop propagation and return false, else assign inner
value as the new object to obj to use it next time. Return true on completion.
Return false beforehand if given key list is empty.
const hasKey = (obj, keys) => {
return (keys.length > 0) && keys.every((key) => {
if (typeof obj !== 'object' || !obj.hasOwnProperty(key)) return false;
obj = obj[key];
return true;
});
};
let obj = {
a: 1,
b: { c: 4 },
'b.d': 5,
};
hasKey(obj, ['a']); // true
hasKey(obj, ['b']); // true
hasKey(obj, ['b', 'c']); // true
hasKey(obj, ['b.d']); // true
hasKey(obj, ['d']); // false
hasKey(obj, ['c']); // false
hasKey(obj, ['b', 'f']); // false