10000 Ensure forEach returns the correct number of iterations for all base … · powercoder23/immutable-js@8d7bca7 · GitHub
[go: up one dir, main page]

Skip to content

Commit 8d7bca7

Browse files
committed
Ensure forEach returns the correct number of iterations for all base collections
1 parent c45f17a commit 8d7bca7

File tree

6 files changed

+38
-71
lines changed

6 files changed

+38
-71
lines changed

dist/Immutable.js

Lines changed: 18 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1210,16 +1210,11 @@ var $Map = Map;
12101210
return new MapIterator(this, 2, reverse);
12111211
},
12121212
__iterate: function(fn, reverse) {
1213-
var map = this;
1214-
if (!map._root) {
1215-
return 0;
1216-
}
1213+
var $__0 = this;
12171214
var iterations = 0;
1218-
this._root.iterate((function(entry) {
1219-
if (fn(entry[1], entry[0], map) === false) {
1220-
return false;
1221-
}
1215+
this._root && this._root.iterate((function(entry) {
12221216
iterations++;
1217+
return fn(entry[1], entry[0], $__0);
12231218
}), reverse);
12241219
return iterations;
12251220
},
@@ -1790,26 +1785,19 @@ var $Vector = Vector;
17901785
return new VectorIterator(this, 2, reverse, reverseIndices);
17911786
},
17921787
__iterate: function(fn, reverse, reverseIndices) {
1793-
var vector = this;
1794-
var lastIndex = 0;
1795-
var maxIndex = vector.length - 1;
1796-
var flipIndices = reverse && !reverseIndices;
1797-
var eachFn = (function(value, ii) {
1798-
if (fn(value, flipIndices ? maxIndex - ii : ii, vector) === false) {
1799-
return false;
1800-
} else {
1801-
lastIndex = ii;
1802-
return true;
1803-
}
1788+
var $__0 = this;
1789+
var iterations = 0;
1790+
var len = this.length;
1791+
var eachFn = (function(v) {
1792+
return fn(v, reverseIndices ? len - ++iterations : iterations++, $__0);
18041793
});
1805-
var didComplete;
18061794
var tailOffset = getTailOffset(this._size);
18071795
if (reverse) {
1808-
didComplete = iterateVNode(this._tail, 0, tailOffset - this._origin, this._size - this._origin< 8000 span class="pl-kos">, eachFn, reverse) && iterateVNode(this._root, this._level, -this._origin, tailOffset - this._origin, eachFn, reverse);
1796+
iterateVNode(this._tail, 0, tailOffset - this._origin, this._size - this._origin, eachFn, reverse) && iterateVNode(this._root, this._level, -this._origin, tailOffset - this._origin, eachFn, reverse);
18091797
} else {
1810-
didComplete = iterateVNode(this._root, this._level, -this._origin, tailOffset - this._origin, eachFn, reverse) && iterateVNode(this._tail, 0, tailOffset - this._origin, this._size - this._origin, eachFn, reverse);
1798+
iterateVNode(this._root, this._level, -this._origin, tailOffset - this._origin, eachFn, reverse) && iterateVNode(this._tail, 0, tailOffset - this._origin, this._size - this._origin, eachFn, reverse);
18111799
}
1812-
return (didComplete ? maxIndex : reverse ? maxIndex - lastIndex : lastIndex) + 1;
1800+
return iterations;
18131801
},
18141802
__deepEquals: function(other) {
18151803
var iterator = this.entries(true);
@@ -1930,14 +1918,13 @@ function iterateVNode(node, level, offset, max, fn, reverse) {
19301918
var ii;
19311919
var array = node && node.array;
19321920
if (level === 0) {
1933-
var from = offset < 0 ? 0 : offset;
1934-
var to = offset + SIZE;
1935-
if (to > max) {
1936-
to = max;
1921+
var from = offset < 0 ? -offset : 0;
1922+
var to = max - offset;
1923+
if (to > SIZE) {
1924+
to = SIZE;
19371925
}
19381926
for (ii = from; ii < to; ii++) {
1939-
var index = reverse ? from + to - 1 - ii : ii;
1940-
if (fn(array && array[index - offset], index) === false) {
1927+
if (fn(array && array[reverse ? from + to - 1 - ii : ii]) === false) {
19411928
return false;
19421929
}
19431930
}
@@ -2705,7 +2692,7 @@ var $Range = Range;
27052692
var value = reverse ? this._start + maxIndex * step : this._start;
27062693
for (var ii = 0; ii <= maxIndex; ii++) {
27072694
if (fn(value, reverseIndices ? maxIndex - ii : ii, this) === false) {
2708-
break;
2695+
return ii + 1;
27092696
}
27102697
value += reverse ? -step : step;
27112698
}
@@ -2770,7 +2757,7 @@ var $Repeat = Repeat;
27702757
var maxIndex = this.length - 1;
27712758
for (var ii = 0; ii <= maxIndex; ii++) {
27722759
if (fn(this._value, reverseIndices ? maxIndex - ii : ii, this) === false) {
2773-
break;
2760+
return ii + 1;
27742761
}
27752762
}
27762763
return ii;

0 commit comments

Comments
 (0)
0