diff --git a/README.md b/README.md index 51eefca5a..c15a1a0cb 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,7 @@ * [Write JSON to file](#write-json-to-file) ### Object +* [Clean JSON object](#clean-json-object) * [Object from key value pairs](#object-from-key-value-pairs) * [Object to key value pairs](#object-to-key-value-pairs) * [Shallow clone object](#shallow-clone-object) @@ -1032,6 +1033,30 @@ const jsonToFile = (obj, filename) => fs.writeFile(`${filename}.json`, JSON.stri [⬆ back to top](#table-of-contents) ## Object +### Clean JSON object + +Use `Object.keys()` method to loop over given json object and deleting keys that are not `include`d in given array. +also if you give it a special key(`childIndicator`) it will search deeply inside it to apply function to inner objects too. + +```js +const cleanObj = (obj, keysToKeep = [], childIndicator) => { + Object.keys(obj).forEach(key => { + if (key === childIndicator) { + cleanObj(obj[key], keysToKeep, childIndicator); + } else if (!keysToKeep.includes(key)) { + delete obj[key]; + } + }) +} +/* + testObj = {a: 1, b: 2, children: {a: 1, b: 2}} + cleanObj(testObj, ["a"],"children") + console.log(testObj)// { a: 1, children : { a: 1}} +*/ +``` + +[⬆ back to top](#table-of-contents) + ### Object from key-value pairs Use `Array.reduce()` to create and combine key-value pairs. diff --git a/snippets/clean-json-objects.md b/snippets/clean-JSON-object.md similarity index 85% rename from snippets/clean-json-objects.md rename to snippets/clean-JSON-object.md index 5af7b6221..241f6ce09 100644 --- a/snippets/clean-json-objects.md +++ b/snippets/clean-JSON-object.md @@ -1,4 +1,4 @@ -### Clean Json objects +### Clean JSON object Use `Object.keys()` method to loop over given json object and deleting keys that are not `include`d in given array. also if you give it a special key(`childIndicator`) it will search deeply inside it to apply function to inner objects too. @@ -7,9 +7,9 @@ also if you give it a special key(`childIndicator`) it will search deeply inside const cleanObj = (obj, keysToKeep = [], childIndicator) => { Object.keys(obj).forEach(key => { if (key === childIndicator) { - cleanObj(obj[key], keysToKeep, childIndicator) + cleanObj(obj[key], keysToKeep, childIndicator); } else if (!keysToKeep.includes(key)) { - delete obj[key] + delete obj[key]; } }) } diff --git a/tag_database b/tag_database index cbf76124d..9f1b18f46 100644 --- a/tag_database +++ b/tag_database @@ -16,6 +16,7 @@ capitalize-first-letter:string chain-asynchronous-functions:function check-for-palindrome:string chunk-array:array +clean-JSON-object:object collatz-algorithm:math compact:array compose-functions:function