ra-core
Version:
Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React
31 lines (23 loc) • 738 B
text/typescript
const removeKey = (target, path) =>
Object.keys(target).reduce((acc, key) => {
if (key !== path) {
return Object.assign({}, acc, { [key]: target[key] });
}
return acc;
}, {});
const deepRemoveKey = (target, path) => {
const paths = path.split('.');
if (paths.length === 1) {
return removeKey(target, path);
}
const deepKey = paths[0];
if (target[deepKey] === undefined) {
return target;
}
const deep = deepRemoveKey(target[deepKey], paths.slice(1).join('.'));
if (Object.keys(deep).length === 0) {
return removeKey(target, deepKey);
}
return Object.assign({}, target, { [deepKey]: deep });
};
export default deepRemoveKey;