chain-able
Version:
interfaces that describe their intentions.
29 lines (22 loc) • 2.42 kB
JavaScript
var isObj = require('../is/obj')
var lengthMinusOne = require('../util/lengthMinusOne')
var getPathSegments = require('./segments')
var isDottable = require('./dottable')
module.exports = function dotdelete(obj, path) {
if (!isDottable(obj, path)) {
return
}
var pathArr = getPathSegments(path)
for (var i = 0; i < pathArr.length; i++) {
var p = pathArr[i]
if (i === lengthMinusOne(pathArr)) {
delete obj[p]
return
}
obj = obj[p]
if (!isObj(obj)) {
return
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLmpzIiwic291cmNlcyI6WyJkZWxldGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNPYmogPSByZXF1aXJlKCcuLi9pcy9vYmonKVxuY29uc3QgbGVuZ3RoTWludXNPbmUgPSByZXF1aXJlKCcuLi91dGlsL2xlbmd0aE1pbnVzT25lJylcbmNvbnN0IGdldFBhdGhTZWdtZW50cyA9IHJlcXVpcmUoJy4vc2VnbWVudHMnKVxuY29uc3QgaXNEb3R0YWJsZSA9IHJlcXVpcmUoJy4vZG90dGFibGUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRvdGRlbGV0ZShvYmosIHBhdGgpIHtcbiAgaWYgKCFpc0RvdHRhYmxlKG9iaiwgcGF0aCkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IHBhdGhBcnIgPSBnZXRQYXRoU2VnbWVudHMocGF0aClcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGhBcnIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwID0gcGF0aEFycltpXVxuXG4gICAgaWYgKGkgPT09IGxlbmd0aE1pbnVzT25lKHBhdGhBcnIpKSB7XG4gICAgICBkZWxldGUgb2JqW3BdXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBvYmogPSBvYmpbcF1cblxuICAgIGlmICghaXNPYmoob2JqKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsiY29uc3QiLCJsZXQiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDbENBLEdBQUssQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDO0FBQ3hEQSxHQUFLLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDN0NBLEdBQUssQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQzs7QUFFeEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO0VBQzdDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFO0lBQzFCLE1BQU07R0FDUDs7RUFFREEsR0FBSyxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDOztFQUVyQyxLQUFLQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN2Q0QsR0FBSyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDOztJQUVwQixJQUFJLENBQUMsS0FBSyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUU7TUFDakMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO01BQ2IsTUFBTTtLQUNQOztJQUVELEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDOztJQUVaLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7TUFDZixNQUFNO0tBQ1A7R0FDRjtDQUNGOyJ9