Skip to content

Instantly share code, notes, and snippets.

@marco-martins
Forked from aurbano/removeKeys.js
Created October 25, 2019 09:17
Show Gist options
  • Save marco-martins/05c7557c7a45ae2243d69b3ee3144a5e to your computer and use it in GitHub Desktop.
Save marco-martins/05c7557c7a45ae2243d69b3ee3144a5e to your computer and use it in GitHub Desktop.
Remove a property from a nested object, recursively
/**
* Remove all specified keys from an object, no matter how deep they are.
* The removal is done in place, so run it on a copy if you don't want to modify the original object.
* This function has no limit so circular objects will probably crash the browser
*
* @param obj The object from where you want to remove the keys
* @param keys An array of property names (strings) to remove
*/
function removeKeys(obj, keys){
var index;
for (var prop in obj) {
// important check that this is objects own property
// not from prototype prop inherited
if(obj.hasOwnProperty(prop)){
switch(typeof(obj[prop])){
case 'string':
index = keys.indexOf(prop);
if(index > -1){
delete obj[prop];
}
break;
case 'object':
index = keys.indexOf(prop);
if(index > -1){
delete obj[prop];
}else{
removeKeys(obj[prop], keys);
}
break;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment