keys is non-empty and use Array.prototype.every() to sequentially check its keys to internal depth of the object, obj.Object.prototype.hasOwnProperty() to check if obj does not have the current key or is not an object, stop propagation and return false.obj to use on the next iteration.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']); // falseSubscribe to get resources directly to your inbox. You won't receive any spam! ✌️