Spaces:
Configuration error
Configuration error
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; | |