artdaq_node_server  v1_00_08
 All Classes Namespaces Files Variables Pages
_lazyValue.js
1 var baseWrapperValue = require('./_baseWrapperValue'),
2  getView = require('./_getView'),
3  isArray = require('./isArray');
4 
6 var LAZY_FILTER_FLAG = 1,
7  LAZY_MAP_FLAG = 2;
8 
9 /* Built-in method references for those with the same name as other `lodash` methods. */
10 var nativeMin = Math.min;
11 
20 function lazyValue() {
21  var array = this.__wrapped__.value(),
22  dir = this.__dir__,
23  isArr = isArray(array),
24  isRight = dir < 0,
25  arrLength = isArr ? array.length : 0,
26  view = getView(0, arrLength, this.__views__),
27  start = view.start,
28  end = view.end,
29  length = end - start,
30  index = isRight ? end : (start - 1),
31  iteratees = this.__iteratees__,
32  iterLength = iteratees.length,
33  resIndex = 0,
34  takeCount = nativeMin(length, this.__takeCount__);
35 
36  if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
37  return baseWrapperValue(array, this.__actions__);
38  }
39  var result = [];
40 
41  outer:
42  while (length-- && resIndex < takeCount) {
43  index += dir;
44 
45  var iterIndex = -1,
46  value = array[index];
47 
48  while (++iterIndex < iterLength) {
49  var data = iteratees[iterIndex],
50  iteratee = data.iteratee,
51  type = data.type,
52  computed = iteratee(value);
53 
54  if (type == LAZY_MAP_FLAG) {
55  value = computed;
56  } else if (!computed) {
57  if (type == LAZY_FILTER_FLAG) {
58  continue outer;
59  } else {
60  break outer;
61  }
62  }
63  }
64  result[resIndex++] = value;
65  }
66  return result;
67 }
68 
69 module.exports = lazyValue;