Safely delete a deeply nested key in an object
npm install del-keyDelete a key from a deeply nested JavaScript object.
There are a few other libs that already aid in deleting keys from objects. But none of them iteratively deletes the key if one of the nested objects is an _array_.
The following are the highlights of this delete-key library.
- Traverses through the exact path for maximum performance. Does not iterate over the keys to detect presence.
- Support for arrays in object path. Keys will be iteratively removed from each item in the array. (This is where del-key differs from lodash's _.unset() method)
- Accepts array index in path definition.
- Mutates the object.
```
$ npm install --save del-key
deleteKey(obj, pathToDelete)
_obj_ - the object that has the key to be deleted
_pathToDelete_ - the path to the key in the object in string notation
_See examples below for more info_.
`js
import deleteKey from 'del-key'; // ES6 style import
// const deleteKey = require('del-key'); // ES5 style import
const obj = {
nestedKey: {
poorKey: 'hello',
luckyKey: 'hi'
}
}
deleteKey(obj, 'nestedKey.poorKey') // =>obj.nestedKey = { luckyKey: 'hi' }
//------------------------------------
const obj = {
nestedArray: [{
poorKey: 'first hello',
luckyKey: 'first hi'
}, {
poorKey: 'second hello',
luckyKey: 'second hi'
}]
}
deleteKey(obj, 'nestedArray[0].poorKey')
// =>obj.nestedArray[0] = { luckyKey: 'first hi' }
// =>obj.nestedArray[1] = { poorKey: 'second hello', luckyKey: 'first hi' }
//------------------------------------
const obj = {
nestedArray: [{
poorKey: 'first hello',
luckyKey: 'first hi'
}, {
poorKey: 'second hello',
luckyKey: 'second hi'
}]
}
deleteKey(obj, 'nestedArray.poorKey') // => iteratively removes poorKey from each item in nestedArray
// =>obj.nestedArray[0] = { luckyKey: 'first hi' }
// =>obj.nestedArray[1] = { luckyKey: 'first hi' }
``
MIT © Dineshkumar Pandiyan