Add haskey snippet

This commit is contained in:
Angelos Chalaris
2019-10-15 15:45:13 +03:00
committed by GitHub
parent e31eb90c45
commit 6e3944dd5f

33
snippets/hasKey.md Normal file
View File

@ -0,0 +1,33 @@
---
title: hasKey
tags: object,recursion,intermediate
---
Returns `true` if the target value exists in a JSON object, `false` otherwise.
Check if the key contains `.`, use `String.prototype.split('.')[0]` to get the first part and store as `_key`.
Use `typeof` to check if the contents of `obj[key]` are an `object` and, if so, call `hasKey` with that object and the remainder of the `key`.
Otherwise, use `Object.keys(obj)` in combination with `Array.prototype.includes()` to check if the given `key` exists.
```js
const hasKey = (obj, key) => {
if (key.includes('.')) {
let _key = key.split('.')[0];
if (typeof obj[_key] === 'object')
return hasKey(obj[_key], key.slice(key.indexOf('.') + 1))
}
return Object.keys(obj).includes(key);
}
```
```js
let obj = {
a: 1, b: { c: 4 }, 'd.e': 5
}
hasKey(obj, 'a'); // true
hasKey(obj, 'b'); // true
hasKey(obj, 'b.c'); // true
hasKey(obj, 'd.e'); // true
hasKey(obj, 'd'); // false
hasKey(obj, 'f'); // false
```