Checks if the target value exists in a JSON object.
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']); // false
JavaScript, Object
Gets the target value in a nested JSON object, based on the given key.
JavaScript, Object
Gets the target value in a nested JSON object, based on the keys
array.
JavaScript, Object
Replaces the names of multiple object keys with the values provided.