X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph-utils.js;h=7aeca8d4e67b7b2c896d6ec80ca602124fde08d6;hb=ff1074cd53a1818d415c5da0a0acb516e6c02d65;hp=8cfd86172495d2c1656d250aea8d3b2339355ca4;hpb=6f417f7817808ec2395d8f39d70b2cebb7df2555;p=dygraphs.git diff --git a/dygraph-utils.js b/dygraph-utils.js index 8cfd861..7aeca8d 100644 --- a/dygraph-utils.js +++ b/dygraph-utils.js @@ -684,46 +684,37 @@ Dygraph.isAndroid = function() { Dygraph.Iterator = function(array, start, length, predicate) { start = start || 0; length = length || array.length; + this.hasNext = true; // Use to identify if there's another element. + this.peek = null; // Use for look-ahead this.array_ = array; this.predicate_ = predicate; this.end_ = Math.min(array.length, start + length); - this.nextIdx_ = start - 1; // use -1 so initial call to advance works. - this.hasNext_ = true; - this.peek_ = null; - this.advance_(); -} - -Dygraph.Iterator.prototype.hasNext = function() { - return this.hasNext_; + this.nextIdx_ = start - 1; // use -1 so initial advance works. + this.next(); // ignoring result. } Dygraph.Iterator.prototype.next = function() { - if (this.hasNext_) { - var obj = this.peek_; - this.advance_(); - return obj; + if (!this.hasNext) { + return null; } - return null; -} + var obj = this.peek; -Dygraph.Iterator.prototype.peek = function() { - return this.peek_; -} - -Dygraph.Iterator.prototype.advance_ = function() { - var nextIdx = this.nextIdx_; - nextIdx++; - while(nextIdx < this.end_) { + var nextIdx = this.nextIdx_ + 1; + var found = false; + while (nextIdx < this.end_) { if (!this.predicate_ || this.predicate_(this.array_, nextIdx)) { - this.peek_ = this.array_[nextIdx]; - this.nextIdx_ = nextIdx; - return; + this.peek = this.array_[nextIdx]; + found = true; + break; } nextIdx++; } this.nextIdx_ = nextIdx; - this.hasNext_ = false; - this.peek_ = null; + if (!found) { + this.hasNext = false; + this.peek = null; + } + return obj; } /**