You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					49 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					49 lines
				
				1.3 KiB
			| 
											3 years ago
										 | var LazyWrapper = require('./_LazyWrapper'), | ||
|  |     LodashWrapper = require('./_LodashWrapper'), | ||
|  |     baseAt = require('./_baseAt'), | ||
|  |     flatRest = require('./_flatRest'), | ||
|  |     isIndex = require('./_isIndex'), | ||
|  |     thru = require('./thru'); | ||
|  | 
 | ||
|  | /** | ||
|  |  * This method is the wrapper version of `_.at`. | ||
|  |  * | ||
|  |  * @name at | ||
|  |  * @memberOf _ | ||
|  |  * @since 1.0.0 | ||
|  |  * @category Seq | ||
|  |  * @param {...(string|string[])} [paths] The property paths to pick. | ||
|  |  * @returns {Object} Returns the new `lodash` wrapper instance. | ||
|  |  * @example | ||
|  |  * | ||
|  |  * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; | ||
|  |  * | ||
|  |  * _(object).at(['a[0].b.c', 'a[1]']).value(); | ||
|  |  * // => [3, 4]
 | ||
|  |  */ | ||
|  | var wrapperAt = flatRest(function(paths) { | ||
|  |   var length = paths.length, | ||
|  |       start = length ? paths[0] : 0, | ||
|  |       value = this.__wrapped__, | ||
|  |       interceptor = function(object) { return baseAt(object, paths); }; | ||
|  | 
 | ||
|  |   if (length > 1 || this.__actions__.length || | ||
|  |       !(value instanceof LazyWrapper) || !isIndex(start)) { | ||
|  |     return this.thru(interceptor); | ||
|  |   } | ||
|  |   value = value.slice(start, +start + (length ? 1 : 0)); | ||
|  |   value.__actions__.push({ | ||
|  |     'func': thru, | ||
|  |     'args': [interceptor], | ||
|  |     'thisArg': undefined | ||
|  |   }); | ||
|  |   return new LodashWrapper(value, this.__chain__).thru(function(array) { | ||
|  |     if (length && !array.length) { | ||
|  |       array.push(undefined); | ||
|  |     } | ||
|  |     return array; | ||
|  |   }); | ||
|  | }); | ||
|  | 
 | ||
|  | module.exports = wrapperAt; |