Skip to content

Instantly share code, notes, and snippets.

@sn-donbenjamin
Forked from aurbano/removeKeys.js
Created April 19, 2019 16:01
Show Gist options
  • Save sn-donbenjamin/87af28d30983fc6cc2992bbd7cedd119 to your computer and use it in GitHub Desktop.
Save sn-donbenjamin/87af28d30983fc6cc2992bbd7cedd119 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){
for (var prop in obj) {
// important check that this is objects own property
// not from prototype prop inherited
if(obj.hasOwnProperty(prop)){
switch(typeof(prop)){
case 'string':
var index = keys.indexOf(prop);
if(index > -1){
delete obj[prop];
}
break;
case 'object':
removeKeys(prop, keys);
break;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment