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.
		
		
		
		
		
			
		
			
				
					
					
						
							69 lines
						
					
					
						
							1.7 KiB
						
					
					
				
			
		
		
	
	
							69 lines
						
					
					
						
							1.7 KiB
						
					
					
				var baseWrapperValue = require('./_baseWrapperValue'), | 
						|
    getView = require('./_getView'), | 
						|
    isArray = require('./isArray'); | 
						|
 | 
						|
/** Used to indicate the type of lazy iteratees. */ | 
						|
var LAZY_FILTER_FLAG = 1, | 
						|
    LAZY_MAP_FLAG = 2; | 
						|
 | 
						|
/* Built-in method references for those with the same name as other `lodash` methods. */ | 
						|
var nativeMin = Math.min; | 
						|
 | 
						|
/** | 
						|
 * Extracts the unwrapped value from its lazy wrapper. | 
						|
 * | 
						|
 * @private | 
						|
 * @name value | 
						|
 * @memberOf LazyWrapper | 
						|
 * @returns {*} Returns the unwrapped value. | 
						|
 */ | 
						|
function lazyValue() { | 
						|
  var array = this.__wrapped__.value(), | 
						|
      dir = this.__dir__, | 
						|
      isArr = isArray(array), | 
						|
      isRight = dir < 0, | 
						|
      arrLength = isArr ? array.length : 0, | 
						|
      view = getView(0, arrLength, this.__views__), | 
						|
      start = view.start, | 
						|
      end = view.end, | 
						|
      length = end - start, | 
						|
      index = isRight ? end : (start - 1), | 
						|
      iteratees = this.__iteratees__, | 
						|
      iterLength = iteratees.length, | 
						|
      resIndex = 0, | 
						|
      takeCount = nativeMin(length, this.__takeCount__); | 
						|
 | 
						|
  if (!isArr || (!isRight && arrLength == length && takeCount == length)) { | 
						|
    return baseWrapperValue(array, this.__actions__); | 
						|
  } | 
						|
  var result = []; | 
						|
 | 
						|
  outer: | 
						|
  while (length-- && resIndex < takeCount) { | 
						|
    index += dir; | 
						|
 | 
						|
    var iterIndex = -1, | 
						|
        value = array[index]; | 
						|
 | 
						|
    while (++iterIndex < iterLength) { | 
						|
      var data = iteratees[iterIndex], | 
						|
          iteratee = data.iteratee, | 
						|
          type = data.type, | 
						|
          computed = iteratee(value); | 
						|
 | 
						|
      if (type == LAZY_MAP_FLAG) { | 
						|
        value = computed; | 
						|
      } else if (!computed) { | 
						|
        if (type == LAZY_FILTER_FLAG) { | 
						|
          continue outer; | 
						|
        } else { | 
						|
          break outer; | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
    result[resIndex++] = value; | 
						|
  } | 
						|
  return result; | 
						|
} | 
						|
 | 
						|
module.exports = lazyValue;
 | 
						|
 |