33 lines
		
	
	
		
			756 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			33 lines
		
	
	
		
			756 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | /*! | ||
|  |  * unset-value <https://github.com/jonschlinkert/unset-value>
 | ||
|  |  * | ||
|  |  * Copyright (c) 2015, 2017, Jon Schlinkert. | ||
|  |  * Released under the MIT License. | ||
|  |  */ | ||
|  | 
 | ||
|  | 'use strict'; | ||
|  | 
 | ||
|  | var isObject = require('isobject'); | ||
|  | var has = require('has-value'); | ||
|  | 
 | ||
|  | module.exports = function unset(obj, prop) { | ||
|  |   if (!isObject(obj)) { | ||
|  |     throw new TypeError('expected an object.'); | ||
|  |   } | ||
|  |   if (obj.hasOwnProperty(prop)) { | ||
|  |     delete obj[prop]; | ||
|  |     return true; | ||
|  |   } | ||
|  | 
 | ||
|  |   if (has(obj, prop)) { | ||
|  |     var segs = prop.split('.'); | ||
|  |     var last = segs.pop(); | ||
|  |     while (segs.length && segs[segs.length - 1].slice(-1) === '\\') { | ||
|  |       last = segs.pop().slice(0, -1) + '.' + last; | ||
|  |     } | ||
|  |     while (segs.length) obj = obj[prop = segs.shift()]; | ||
|  |     return (delete obj[last]); | ||
|  |   } | ||
|  |   return true; | ||
|  | }; |