Skip to content

Instantly share code, notes, and snippets.

@iuliaL
Last active November 9, 2017 18:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iuliaL/9a4c5ebff473bddf6905c9c7ed505fbc to your computer and use it in GitHub Desktop.
Save iuliaL/9a4c5ebff473bddf6905c9c7ed505fbc to your computer and use it in GitHub Desktop.
Delete (nested) keys passed as any number of arguments from JSON object using recursion
"use strict";
import _ from 'lodash';
// works with
// just key name (i.e 'password', 'tenantName')
const recursiveCleaner = (object, keys) =>{
return Object.keys(object).reduce((objectSoFar, key) => {
if (object[key] && typeof object[key] === 'object') {
objectSoFar[key] = recursiveCleaner(object[key], keys);
return objectSoFar;
} else if (keys.indexOf(key) > -1){ //if is in keys to delete array don't add it
return objectSoFar;
} else {
objectSoFar[key] = object[key];
return objectSoFar;
}
}, {});
};
const deleteKeysFromObject = (obj: Object, ...keysToDelete: Array<string>) =>{
return recursiveCleaner(_.clone(obj, true), keysToDelete);
};
console.log(deleteKeysFromObject(jsonObj, 'apiBaseUrl', 'password', 'username'));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment