Cleanup lazyValue.

This commit is contained in:
John-David Dalton
2014-10-03 00:13:19 -07:00
parent ad10a1eba5
commit 5334c599f0

View File

@@ -4749,9 +4749,9 @@
if (array instanceof LodashWrapper) { if (array instanceof LodashWrapper) {
array = array.value(); array = array.value();
} }
var start = 0, var length = array.length,
end = array.length, start = 0,
length = end, end = length,
views = this.views, views = this.views,
viewsLength = views.length; viewsLength = views.length;
@@ -4760,49 +4760,42 @@
size = view.size; size = view.size;
switch (view.type) { switch (view.type) {
case 'take': end = nativeMin(end, start + size); break;
case 'takeRight': start = nativeMax(start, end - size); break;
case 'drop': start += size; break; case 'drop': start += size; break;
case 'dropRight': end -= size; break; case 'dropRight': end -= size; break;
case 'take': end = nativeMin(end, start + size); break;
case 'takeRight': start = nativeMax(start, end - size); break;
} }
} }
var dir = this.dir, var dir = this.dir,
index = (dir == 1 ? start : end) - dir, index = (dir == 1 ? start : end) - dir,
iteratees = this.iteratees, iteratees = this.iteratees,
iterateesLength = iteratees.length, iterateesLength = iteratees.length,
resIndex = -1, resIndex = 0,
resLimit = end - start, resLimit = end - start,
result = []; result = [];
outer: outer:
while (length-- && result.length < resLimit) { while (length-- && resIndex < resLimit) {
index += dir;
var iterateesIndex = -1, var iterateesIndex = -1,
value = array[index]; value = array[index += dir];
while (++iterateesIndex < iterateesLength) { while (++iterateesIndex < iterateesLength) {
var data = iteratees[iterateesIndex], var data = iteratees[iterateesIndex],
iteratee = data.iteratee; iteratee = data.iteratee,
output = iteratee(value, index, array),
type = data.type;
switch (data.type) { if (type == LAZY_MAP_FLAG) {
case LAZY_FILTER_FLAG: value = output;
if (!iteratee(value, index, array)) { } else if (!output) {
continue outer; if (type == LAZY_FILTER_FLAG) {
} continue outer;
break; } else {
break outer;
case LAZY_MAP_FLAG: }
value = iteratee(value, index, array);
break;
case LAZY_WHILE_FLAG:
if (!iteratee(value, index, array)) {
break outer;
}
} }
} }
result[++resIndex] = value; result[resIndex++] = value;
} }
return result; return result;
} }